2009-09-11 2 views
9

나는 몇 가지를 병렬화 multiprocessing를 사용하여 포함 my_parallel_script.py라는 파이썬 스크립트를하고 난 다음 명령을 실행 :어떻게 병렬화 된 Python 스크립트를 프로파일 링 할 수 있습니까? 가정하자

python -m cProfile my_parallel_script.py 

이것은 부모 프로세스 만 출력 프로파일 생성합니다. 자식 프로세스에서 작성된 호출은 전혀 기록되지 않습니다. 하위 프로세스도 프로파일 링 할 수 있습니까?

소스를 수정할 수있는 유일한 방법은 무엇일까요?이 작업을 수행하는 가장 간단한 방법은 무엇입니까?

답변

8

cProfile은 단일 프로세스에서만 작동하므로 프로파일 된 자식 프로세스를 자동으로 가져 오지 않습니다.

하나의 프로세스로 별도로 호출 할 수 있도록 하위 프로세스 코드를 조정할 것을 권장합니다. 그런 다음 프로파일 러에서 실행하십시오. 프로파일 링하는 동안 시스템 다중 프로세스를 실행할 필요가 없으므로 단일 자식 만 실행되도록 작업이 단순화됩니다.

+3

나는 이것을 이미 시도했지만, 불행히도 ** ** 프로파일 링하는 동안 시스템 다중 프로세스를 실행해야합니다. 그것은 시간이 지나면 크게 느려지는 것처럼 보이지만, 멀티 프로세싱이 가능할 때만 실행됩니다. – Fragsworth

+3

그러면 자원 경합이 발생하고 프로파일 링으로 인해이를 발견 할 수 없을 수도 있습니다. 어쨌든 모든 자식 프로세스를 한 번에 프로파일 링 해 볼 수 있습니다. 자식 파이썬 코드에서 프로그래밍 방식으로 프로파일을 호출 할 수 있습니다. –