Многопроцессорное профилирование 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 разных файлов. Внутри каждого я хочу видеть, что мой метод "worker" выполняется примерно за 3 секунды, но вместо этого я вижу только то, что происходит внутри метода "start".

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

Обновление: рабочий пример на основе принятого ответа:

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()
41
задан rajatppn 21 March 2018 в 11:23
поделиться