python - prof文件 - pytorch profile



Python多进程概要分析 (1)

我正在努力弄清楚如何分析一个简单的多进程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'method内部正在发生的事情。

如果有人能向我解释,我将不胜感激。

更新:基于已接受答案的工作示例:

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()

您正在分析流程启动,这就是为什么您只看到p.start()发生的事情 - 正如您所说的那样 - 并且一旦子流程启动就会返回p.start() 。 您需要在worker方法内部进行概要分析,该方法将在子进程中调用。





cprofile