複数のプロセスにデータを送信したい。すべてのプロセスがそのデータで何か他のことを行い、次のデータを待つ。Python 2の複数のプロセスにデータを送信
worker 1 : 1
worker 2 : 1
worker 1 : 2
worker 2 : 2
:私はこのような何かを期待し
worker 2 : 1
worker 1 : 2
:
from multiprocessing import Process, Manager
def do_work1(in_queue):
while True:
item = in_queue.get()
# exit signal
if item == None:
return
print "worker 1 : {}".format(item)
def do_work2(in_queue):
while True:
item = in_queue.get()
# exit signal
if item == None:
return
print "worker 2: {}".format(item)
if __name__ == "__main__":
num_workers = 2
manager = Manager()
work = manager.Queue(num_workers)
# start for workers
pool = []
p = Process(target=do_work1, args=(work,))
p.start()
pool.append(p)
p2 = Process(target=do_work2, args=(work,))
p2.start()
pool.append(p2)
work.put("1")
work.put("2")
for p in pool:
p.join()
しかし、実行後の私が手にこのコード:
worker 1 : 1
worker 1 : 2
または私はこのようなものを持っています私が取得したい場合、私は何を変えるべきですか?上記の結果は?
を使用して、手動キュー処理を排除することができますが、それはデフォルトのライブラリではありませんので、それはマニュアルに表示されないことがあり – John
を漬けことができませんPythonで。しかし、それはピックアップすることができます。 – njoosse
これはndarrayで動作します。どうもありがとう – John