Python multiprocessing pool: maxtasksperchild(PYTHON多处理池:MaxtaskperChild)
问题描述
我一直在尝试使用Python的多处理库,尽管它提供了一个非常容易使用的API,但它的文档并不总是非常清楚。特别是,传递给Pool类的一个实例的参数‘MaxtaskperChild’让我感到非常困惑。
以下内容直接摘自Python的文档(3.7.2):
MaxtaskperChild是工作进程在退出并替换为新的工作进程以释放未使用的资源之前可以完成的任务数。默认的MaxtaskperChild为NONE,这意味着工作进程将与池一样长。
以上给我带来的问题多于它所回答的问题。工作进程与池一样长的生存时间是不是很糟糕?是什么让工作流程变得"新鲜"?什么时候才是所需的?一般来说,您应该在什么时候显式设置MaxtaskperChild的值,而不是将其默认为‘None’?为了最大限度地提高处理速度,您认为哪些是最佳实践?
从@Darkonaut's amazing answer on chunksize中,我现在了解了块大小的作用和表示。由于提供区块大小的值会影响"任务"的数量,我想知道是否应该考虑它们的依赖关系以确保最高性能?谢谢!
推荐答案
通常您不需要触摸它。例如,有时在Python外部调用代码可能会出现内存泄漏的问题。限制工作进程在被替换之前执行的任务数量会有所帮助,因为当进程被废弃时,他错误积累的"未使用资源"会被释放。然后,开始一个新的、"新鲜的"过程,让问题得到控制。因为替换一个进程需要时间,为了提高性能,默认情况下让maxtasksperchild
。当有一天遇到无法解释的资源问题时,可以尝试设置maxtasksperchild=1
,看看这是否会改变什么。如果是,则可能是某物泄漏了某物。
这篇关于PYTHON多处理池:MaxtaskperChild的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PYTHON多处理池:MaxtaskperChild
基础教程推荐
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01