multitarea multihilos python multiprocessing cprofile

multihilos - Perfiles de multiprocesamiento de Python



multihilos en python (1)

Estás perfilando el inicio del proceso, por lo que solo estás viendo lo que sucede en p.start() como dices, y p.start() regresa una vez que se inicia el subproceso. Necesita crear un perfil dentro del método de worker , que se llamará en los subprocesos.

Estoy luchando para descubrir cómo crear un perfil de una secuencia de comandos 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 comenzando 5 procesos y, por lo tanto, cProfile genera 5 archivos diferentes. Dentro de cada uno quiero ver que mi método ''trabajador'' tarda aproximadamente 3 segundos en ejecutarse, pero en su lugar solo veo lo que está sucediendo dentro del ''método de inicio''.

Agradecería muchísimo si alguien pudiera explicarme 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()