Profilowanie wieloprocesowe Pythona

Staram się znaleźć sposób na profilowanie prostego skryptu Pythona wieloprocesowego

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)

Rozpoczynam 5 procesów i dlatego cProfile generuje 5 różnych plików. Wewnątrz każdego chcę zobaczyć, że moja metoda „worker” trwa około 3 sekund, ale zamiast tego widzę tylko to, co dzieje się w metodzie „start”.

Byłbym bardzo wdzięczny, gdyby ktoś mógł mi to wyjaśnić.

Aktualizacja: przykład pracy oparty na zaakceptowanej odpowiedzi:
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()

questionAnswers(1)

yourAnswerToTheQuestion