import multiprocessing
def worker(item):
print(item)
return item
if __name__ == "__main__":
with multiprocessing.Pool(4) as pool:
for i in pool.imap_unordered(worker, range(100), chunksize=1):
if i == 10:
print('terminate')
pool.terminate()
break
print('done')
这就是
terminate
方法的用途,但是您必须小心如何使用它。它会杀死工作进程,但令人惊讶的是它不会阻止您永远阻塞等待的调用。因此,只有在执行apply_async
或imap_unordered
调用时才能使用它。从另一个线程关闭通常会导致对池的调用挂起。在本例中,我将chunksize
设置为1,如果单个工作项有大量的处理,则这是首选值。如果工作项成本较低并且您不介意在完成之前处理更多项,则可以将chunksize
设置为更大的值。但不要使用默认值。。。必须在任何东西返回给你之前处理好。相关问题 更多 >
编程相关推荐