Python-Multiprozess-profiling
Ich bin kämpfen, um herauszufinden, wie man profile ein einfaches Multiprozess-python-Skript
import multiprocessing
import cProfile
import time
def worker(num):
time.sleep(3)
print 'Worker:', num
if __name__ == '__main__':
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
cProfile.run('p.start()', 'prof%d.prof' %i)
Ich bin ab 5 Prozesse, und daher cProfile erzeugt 5 unterschiedliche Dateien. Innerhalb der einzelnen will ich sehen, dass meine Methode "Arbeitnehmer" dauert etwa 3 Sekunden zu laufen, aber stattdessen sehe ich nur, was in der 'start'method.
Ich würde mich sehr freuen, wenn jemand erklären könnte, mir.
Update: Sie Arbeiten beispielsweise auf Basis anerkannter Antwort:
import multiprocessing
import cProfile
import time
def test(num):
time.sleep(3)
print 'Worker:', num
def worker(num):
cProfile.runctx('test(num)', globals(), locals(), 'prof%d.prof' %num)
if __name__ == '__main__':
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
p.start()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist-profiling-Prozess Start -, das ist, warum Sie nur sehen, was passiert in
p.start()
wie Sie sagen—undp.start()
zurück, sobald der Teilprozess wird gestartet. Sie müssen Profil imworker
- Methode, die aufgerufen werden, in der Teilprozesse.