Как вы можете профилировать параллельный скрипт Python?
-
05-07-2019 - |
Вопрос
Предположим, у меня есть скрипт на языке Python my_parallel_script.py
, который включает использование multiprocessing
для параллелизации нескольких вещей, и я запускаю его с помощью следующей команды:
python -m cProfile my_parallel_script.py
Это создает вывод профилирования только для родительского процесса . Вызовы, сделанные в дочерних процессах, вообще не записываются. Можно ли также профилировать дочерние процессы?
Если единственный вариант - изменить источник, какой самый простой способ сделать это?
Решение
cProfile работает только в рамках одного процесса, поэтому вы не сможете автоматически профилировать дочерний процесс.
Я бы порекомендовал вам настроить код дочернего процесса, чтобы вы могли вызывать его отдельно как один процесс. Затем запустите его под профилировщиком. Вероятно, вам не нужно запускать многопроцессорную систему во время профилирования, и это упростит задачу, если будет запущен только один дочерний процесс.