モジュールのドキュメントには、 でmultiprocessing
開始されたプロセスにキューを渡す方法が示されていますmultiprocessing.Process
。しかし、で開始された非同期ワーカー プロセスとキューを共有するにはどうすればよいapply_async
でしょうか。動的結合などは必要ありません。ワーカーが結果を (繰り返し) ベースに報告する方法だけです。
import multiprocessing
def worker(name, que):
que.put("%d is done" % name)
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=3)
q = multiprocessing.Queue()
workers = pool.apply_async(worker, (33, q))
これは失敗します:
RuntimeError: Queue objects should only be shared between processes through inheritance
. 私はこれが何を意味するかを理解しています。また、ピクル/アンピクル (およびすべての特別な Windows の制限) を要求するのではなく、継承するというアドバイスも理解しています。しかし、機能する方法でキューを渡すにはどうすればよいでしょうか? 例が見つかりません。さまざまな方法で失敗したいくつかの代替案を試しました。助けてください?