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)
我想你正在使用Windows呢? –
在Ubuntu上,編輯 – bold
可以顯示代碼_doesn't_工作,而不是工作?我想我解決了這樣的問題。讓我找到 –