私はguiコードの一部にシンプルなプロデューサコンシューマパターンを設定しました。私は最適化のチャンスがあるかどうかを見るために特定の消費者セクションだけをプロファイルしようとしています。しかし、python -m cProfile -o out.txt myscript.py
でコードを実行しようとすると、Pythonのpickle
モジュールから投げられたエラーが発生します。マルチプロセッシングを使用するPythonコードのプロファイリング?
File "<string>", line 1, in <module>
File "c:\python27\lib\multiprocessing\forking.py", line 374, in main
self = load(from_parent)
File "c:\python27\lib\pickle.py", line 1378, in load
return Unpickler(file).load()
File "c:\python27\lib\pickle.py", line 858, in load
dispatch[key](self)
File "c:\python27\lib\pickle.py", line 880, in load_eof
raise EOFError
EOFError
コード内の基本的なパターンは、これは通常、物事のGUI側からタスクを与えているが、次のようにテスト目的のために、私はそれを設定
class MyProcess(multiprocessing.Process):
def __init__(self, in_queue, msg_queue):
multiprocessing.Process.__init__(self)
self.in_queue = in_queue
self.ext_msg_queue = msg_queue
self.name == multiprocessing.current_process().name
def run(self):
## Do Stuff with the queued items
です。
if __name__ == '__main__':
queue = multiprocessing.Queue()
meg_queue = multiprocessing.Queue()
p = Grabber(queue)
p.daemon = True
p.start()
time.sleep(20)
p.join()
しかし、スクリプトを開始しようとすると、上記のエラーメッセージが表示されます。
エラーを回避する方法はありますか?