Как вы можете профилировать параллельный скрипт Python? - PullRequest
10 голосов
/ 11 сентября 2009

Предположим, у меня есть скрипт на языке python my_parallel_script.py, который включает использование multiprocessing для распараллеливания нескольких вещей, и я запускаю его с помощью следующей команды:

python -m cProfile my_parallel_script.py

Генерирует выходные данные профилирования только для родительского процесса . Вызовы, сделанные в дочерних процессах, вообще не записываются. Можно ли также профилировать дочерние процессы?

Если единственный вариант - изменить источник, какой самый простой способ сделать это?

1 Ответ

9 голосов
/ 11 сентября 2009

cProfile работает только в рамках одного процесса, поэтому вы не сможете автоматически профилировать дочерний процесс.

Я бы порекомендовал вам настроить код дочернего процесса, чтобы вы могли вызывать его отдельно как один процесс. Затем запустите его под профилировщиком. Вероятно, вам не нужно запускать многопроцессорную систему во время профилирования, и это упростит задачу, если будет запущен только один дочерний процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...