【发布时间】:2019-03-03 23:23:58
【问题描述】:
我一直在涉足 Python 的多处理库,尽管它提供了非常易于使用的 API,但它的文档并不总是很清楚。特别是,传递给 Pool 类实例的参数“maxtasksperchild”让我感到非常困惑。
以下内容直接来自 Python 的文档(3.7.2):
maxtasksperchild 是工作进程在退出并被新的工作进程替换之前可以完成的任务数,以释放未使用的资源。默认的 maxtasksperchild 为 None,这意味着工作进程将与池一样长。
以上对我提出的问题比它回答的要多。工作进程与池一样长是不是很糟糕?是什么让工作进程“新鲜”?什么时候需要?一般来说,什么时候应该明确设置 maxtasksperchild 的值,而不是让它默认为“无”,为了最大限度地提高处理速度,什么是最佳实践?
来自@Darkonaut's amazing answer on chunksize 我现在明白了 chunksize 的作用和代表的意义。由于为 chunksize 提供值会影响“任务”的数量,我想知道是否应该考虑它们的依赖性以确保最大性能?
谢谢!
【问题讨论】:
标签: python multiprocessing python-multiprocessing pool