다중 프로세스 예외 캡처
2039 단어 exceptionmultiprocessing
단일 프로세스 추적으로 변경한 후 다음 문장에\d가 잘못 쓰여 있음을 발견했습니다.
def launch(s, e, i)
# ...
print 'Process -%d\tnum: %d\tsuccess: %d\tdiscard: %d\tnull_num: \d\terr: %d\ttime_clock: %s' % \
(pid, num, cnt, discard, null_num, err, str(time.clock()))
# ...
if __name__ == "__main__":
for i in range(2):
_start = 1
_end = 100
pool.apply_async(launch, (_start, _end, i))
pool.close()
pool.join()
단일 프로세스 디버깅 시:
def launch()
# ...
print 'Process -%d\tnum: %d\tsuccess: %d\tdiscard: %d\tnull_num: \d\terr: %d\ttime_clock: %s' % \
(1, 2, 3, 4, 5, 6, str(time.clock()))
# ...
if __name__ == "__main__":
for i in range(2):
_start = 1
_end = 100
pool.apply_async(launch)
pool.close()
pool.join()
오류는 다음과 같습니다.
Traceback (most recent call last):
File "E:/repository/datafuse/snowball/src/abs_person_import_133_debug.py", line 920, in <module>
launch(1,100,0)
File "E:/repository/datafuse/snowball/src/abs_person_import_133_debug.py", line 907, in launch
(pid, num, cnt, discard, null_num, err, str(time.clock()))
TypeError: not all arguments converted during string formatting
분석에 의하면 다중 프로세스 실행 방식을 사용하기 때문에 하위 프로세스를 시작한 후 프로세스 이상 출력은 현재 단말기(ssh 연결)에 나타나지 않으며 하위 프로세스가 단말기 출력을 차지하지 않기 때문에 이상 창고를 인쇄하지 않을 것으로 추정된다.
그러나 프로그램이 아래와 같이 수정된 후에도 여전히 틀리지 않았다...(╯‵□′)╯︵┻━┻
def launch(a, b, c)
# ...
print 'Process -%d\tnum: %d\tsuccess: %d\tdiscard: %d\tnull_num: \d\terr: %d\ttime_clock: %s' % \
(a, b, c, 4, 5, 6, str(time.clock()))
# ...
if __name__ == "__main__":
for i in range(2):
_start = 1
_end = 100
pool.apply_async(launch, (1, 100, 0))
pool.close()
pool.join()
파라미터를 사용했기 때문에 Pool에서 처리 절차가 바뀌었을 수도 있습니다.
인터넷이 끊겼어요...(계속)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception Class에서 에러 코드 해석 ~초기초편~직장에서 C# 프로젝트가 내뿜는 오류 코드를 구문 분석하고 오류의 위치를 확인하기 위해 Exception class를 활용할 수 있었습니다. 지금까지 Exception Class 에 대해서 별로 파악할 수 없었기 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.