Pregunta

Supongamos que tengo un script en python llamado my_parallel_script.py que implica el uso de multiprocessing para paralelizar varias cosas y lo ejecuto con el siguiente comando:

python -m cProfile my_parallel_script.py

Esto genera resultados de perfil solo para el proceso principal . Las llamadas realizadas en procesos secundarios no se registran en absoluto. ¿Es posible también perfilar los procesos secundarios?

Si la única opción es modificar la fuente, ¿cuál sería la forma más sencilla de hacerlo?

¿Fue útil?

Solución

cProfile solo funciona en un solo proceso, por lo que no obtendrá automáticamente el perfil secundario del proceso.

Le recomendaría que modifique el código de proceso secundario para que pueda invocarlo por separado como un solo proceso. Luego ejecútalo bajo el perfilador. Probablemente no necesite ejecutar el proceso múltiple de su sistema mientras realiza el perfil, y simplificará el trabajo para tener solo un único hijo en ejecución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top