Frage

Angenommen, ich ein Python-Skript namens my_parallel_script.py haben, die multiprocessing Verwendung beinhaltet mehrere Dinge parallelisieren und ich führen Sie es mit dem folgenden Befehl:

python -m cProfile my_parallel_script.py

Dies erzeugt Ausgang Profilierung für den Eltern-Prozess nur. Anrufe in Kindprozesse vorgenommen werden nicht aufgezeichnet. Ist es möglich, auch die untergeordneten Prozesse zu profilieren?

Wenn die einzige Möglichkeit ist, um die Quelle zu ändern, was wäre der einfachste Weg, dies zu tun?

War es hilfreich?

Lösung

cProfile funktioniert nur in einem einzigen Prozess, so dass Sie nicht automatisch das Kind Prozess profiliert erhalten.

Ich würde empfehlen, dass Sie das Kind Prozess Code optimieren, damit Sie sie separat als einem einzigen Prozess aufrufen kann. führen Sie es dann unter dem Profiler. Sie wahrscheinlich nicht brauchen Ihr System Multi-Prozess ausgeführt werden, während der Profilierung und es wird die Arbeit zu vereinfachen, nur ein einziges Kind haben, ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top