Вопрос

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

python -m cProfile my_parallel_script.py

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top