multiprocessing.Pool
的文档说明如下(略有缩写):
池对象支持上下文管理协议。
__enter__()
返回池对象,__exit__()
调用terminate()
。
为什么__exit__()
拨打terminate()
而不是close()
?如果它调用close()
会不会更好?这将等到所有任务完成后再关闭池。
要了解我提出的原因,请考虑open()
。在__exit__()
时,它在返回的文件对象上调用close()
,这可确保所有缓冲的数据都已写入磁盘。 __exit__()
调用一些不能保证所有数据都被刷新的类似终止的函数是没有意义的。或者是吗?