我正在努力弄清楚如何分析一个简单的多进程 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()