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()
InformationsquelleAutor barmaley | 2012-06-14
Schreibe einen Kommentar