这就是
terminate
方法是为,但您必须小心使用它。它会杀死工作进程,但令人惊讶的是,它不会阻止您在等待呼叫时永远阻塞。所以你只有这样才能使用它
apply_async
或
imap_unordered
呼叫。从另一个线程关闭通常会导致对池的调用挂起。在本例中,我设置
chunksize
到1,如果单个工作项具有大量处理,则该值是首选值。您可以设置
块大小
如果工作项成本较低,并且您不介意在完成之前处理更多的项,那么您将获得更大的收益。但不要使用默认值。。。必须处理的项目将在任何事情返回给您之前进行处理。
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')