답변:
진정한 멀티 프로세싱 파이썬 프로그램 ( 두려운 GIL 을 다루어야하는 멀티 스레드 파이썬 프로그램 과 달리 )은 다른 언어의 프로그램과 다르지 않습니다. 그들은 모두 동일한 기본 과제를 가지고 있습니다.
이러한 각 문제를 피하려고하는 개발 방법이 있지만 하루가 끝나면 실제로하고있는 일에 대해 생각해야합니다. 나는 추천 무거운 스트레스 테스트를 - 지금까지 당신이 실제 생활에서 일어날 것 같아 아무 이상 - 당신은 기회의 그 윈도우 타격 및 주요 데모 또는 생산시 중간에 반대로 개발에 날려의 좋은 기회가 그래서.
우리는 마이크로 - 타임 스탬프 로그 파일을 사용하는 데 사용하고 우리가 할 수 있도록 다음 색상으로 구분 로그보기 응용 프로그램을 만들 려고 M 프로세서에서 실행되는 N 공정 사이에 무슨 일이 일어 났는지 시각화 할 수 있습니다. 또한 충돌의 상황을 재현하기 위해 로그 파일을 제거하는 시스템을 만들려고 노력했습니다.
그러나 가장 좋은 도구는 좋은 디자인이며 실제로 앱을 물 밖으로 날려 버리는 악하고 불쾌한 사람들입니다. (안녕하세요!)
내가 매우 유용하다고 생각하는 것 중 하나는 multiprocessing
모듈 에서 기존 로거를 사용하는 것 입니다. 메인 코드에서 이것을 시도하십시오 :
import multiprocessing, logging
mpl = multiprocessing.log_to_stderr()
mpl.setLevel(logging.INFO)
참조 : http://docs.python.org/library/multiprocessing.html#logging
또한 다음을 사용하여 현재 프로세스 이름에 액세스 할 수 있습니다.
cpname = multiprocessing.current_process().name
# print cpname
mylogger.info("{0} is currently doing...".format(cpname))
참조 : http://docs.python.org/library/multiprocessing.html#multiprocessing.current_process
그 외에도 나는 pdb
& co 와 같은 표준 디버깅 방법을 제외하고는 아무것도 모른다 .