これはPython 3.2.2用です。Pythonマルチプロセッシングパイプは正しくrecv()しません
from multiprocessing import Pipe, Process
def f(r):
print(r.recv())
if __name__ == '__main__':
q, r = Pipe()
p = Process(target=f, args=(r,))
p.start()
q.send([42, None, 'hello'])
p.join()
は、メインスレッドが新しいProcess
、p
を作成し、機能f()
に、双方向の接続オブジェクト、r
を送信:私はちょうどPythonとマルチプロセッシングの仕事とこの単純な例では、私をトリップされたかを学んでいます。プロセスp
が起動すると、メインプロセスがいくつかのオブジェクトをq.send
まで送信するまで、r.recv()
がブロックすることを期待しています(これは、わかっている限り、このプロセスが何かがパイプを通過するまで無期限に待機することを意味します)。
次にp.join()
は、p
が実行されるまでメインプロセスを待機させる必要があります。
何も起こりません。 f()
にprint
文を追加すると、f()
が実行されないようになり、p.start()
が機能しないように、何も起こりません。
なぜこれが機能しないのか、何が修正されるのか説明できますか?