Perfil de multiproceso Python

Estoy luchando para descubrir cómo perfilar un script de python multiproceso simple

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)

Estoy iniciando 5 procesos y, por lo tanto, cProfile genera 5 archivos diferentes. Dentro de cada una, quiero ver que mi método 'worker' tarda aproximadamente 3 segundos en ejecutarse, pero en lugar de eso solo veo lo que ocurre dentro del método 'start'.

Apreciaría mucho si alguien me pudiera explicar esto.

Actualización: Ejemplo de trabajo basado en la respuesta aceptada:
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()

Respuestas a la pregunta(1)

Su respuesta a la pregunta