Perfil de multiprocesso do Python
Eu estou lutando para descobrir como criar um perfil de script python multiprocess simples
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)
Eu estou começando 5 processos e, portanto, cProfile gera 5 arquivos diferentes. Dentro de cada um eu quero ver que meu método 'worker' leva aproximadamente 3 segundos para rodar, mas ao invés disso eu estou vendo apenas o que está acontecendo dentro do 'start'.
Eu agradeceria muito se alguém pudesse explicar isso para mim.
Atualização: Exemplo de trabalho com base na resposta aceita: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()