Python-Multiprozess-Profilerstellung

Ich habe Mühe, herauszufinden, wie man ein einfaches Multiprozess-Python-Skript profiliert

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 starte 5 Prozesse und deshalb erzeugt cProfile 5 verschiedene Dateien. In jedem möchte ich sehen, dass die Ausführung meiner Methode 'worker' ungefähr 3 Sekunden dauert, aber stattdessen sehe ich nur, was in der Methode 'start' vor sich geht.

Ich würde mich sehr freuen, wenn mir jemand dies erklären könnte.

Update: Arbeitsbeispiel basierend auf akzeptierter 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()

Antworten auf die Frage(1)

Ihre Antwort auf die Frage