2
プロセスの中でmultiprocessing.pool.map
と呼んでいます。プロセス内で呼び出されているブロッキングマルチプロセッシングpool.map
run()
関数内で初期化すると機能します。インスタンシエーション時に初期化されても、インスタンス化されません。
私はこの現象の理由を理解できませんか?このプロセスではどうなりますか?それはその機能のためのパイプやスレッドに依存しているので、私のpython 3.6
from multiprocessing import Pool, Process, Queue
def DummyPrinter(key):
print(key)
class Consumer(Process):
def __init__(self, task_queue):
Process.__init__(self)
self.task_queue = task_queue
self.p = Pool(1)
def run(self):
p = Pool(8)
while True:
next_task = self.task_queue.get()
if next_task is None:
break
p.map(DummyPrinter, next_task) # Works
#self.p.map(DummyPrinter, next_task) # Does not Work
return
if __name__ == '__main__':
task_queue = Queue()
Consumer(task_queue).start()
task_queue.put(range(5))
task_queue.put(None)
あなたはウィンドウを使用しているとしますか? –
Ubuntuで、 – bold
を編集すると、動作していないコードを表示できますか?私はそのような問題を解決したと思う。私はそれを見つけることができます –