単純なマルチプロセス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()