Многопроцессное профилирование Python

Я изо всех сил пытаюсь понять, как профилировать простой многопроцессорный скрипт на Python

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)

Я запускаю 5 процессов и, следовательно, cProfile создает 5 разных файлов. Внутри каждого я хочу видеть, что мой метод «работник» для запуска требуется приблизительно 3 секунды, но вместо этого я вижу только то, что происходит внутри метода "start".

Буду очень признателен, если кто-нибудь сможет мне это объяснить.

Update: Working example based on accepted answer:
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()

Ответы на вопрос(1)

Решение Вопроса

поэтому вы только видите, что происходит вp.start() как вы говорите & # x2014; иp.start() возвращается после запуска подпроцесса. Вам нужно профилировать внутриworker метод, который будет вызван в подпроцессах.

 23 июл. 2012 г., 19:11
@ DavoudTaghawi-Nejad См. «Рабочий пример». в вопросе.
 23 июл. 2012 г., 18:53
не могли бы вы проиллюстрировать, как это сделать?
 barmaley14 июн. 2012 г., 23:58
Вот Это Да! Я чувствую себя глупо :) это было так просто. Большое спасибо! И спасибо за быстрый ответ.
 15 июн. 2012 г., 01:55
Вы ставите. И спасибо, что позаботились о вашем вопросе!

Ваш ответ на вопрос