Question

Supposons que j’ai un script python appelé my_parallel_script.py qui implique l’utilisation de le multitraitement pour paralléliser plusieurs éléments et que je l’exécute avec la commande suivante:

python -m cProfile my_parallel_script.py

Ceci génère une sortie de profilage pour le processus parent uniquement. Les appels passés dans les processus enfants ne sont pas du tout enregistrés. Est-il possible de profiler également les processus enfants?

Si la seule option est de modifier le source, quel serait le moyen le plus simple de le faire?

Était-ce utile?

La solution

Le profil cProfile ne fonctionne que dans un seul processus. Par conséquent, le processus enfant n'est pas automatiquement profilé.

Je vous recommanderais de modifier le code du processus enfant afin de pouvoir l'invoquer séparément en tant que processus unique. Puis lancez-le sous le profileur. Vous n'avez probablement pas besoin d'exécuter votre système multi-processus lors du profilage et simplifiera le travail si un seul enfant est en cours d'exécution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top