Como você pode perfil de um script Python parallelized?
-
05-07-2019 - |
Pergunta
Suponha que eu tenho um script python chamado my_parallel_script.py
que envolve o uso de multiprocessing
paralelizar várias coisas e eu executá-lo com o seguinte comando:
python -m cProfile my_parallel_script.py
Isso gera perfis de saída para o processo pai somente. As chamadas feitas em processos filhos não são gravados em tudo. É possível ao perfil dos processos criança assim?
Se a única opção é modificar a fonte, o que seria a maneira mais simples de fazer isso?
Solução
Cprofile só funciona dentro de um único processo, para que você não será automaticamente se o processo filho perfilado.
Eu recomendaria que você ajustar o código processo filho para que você possa chamá-lo separadamente, como um único processo. Em seguida, execute-o sob o profiler. Você provavelmente não precisa para executar o seu multi-processo do sistema, enquanto perfilando, e vai simplificar o trabalho para ter apenas uma única corrida criança.