【问题标题】:Python Multiprocessing: How to set up the number of max_workers properly?Python Multiprocessing:如何正确设置 max_workers 的数量?
【发布时间】:2020-10-08 00:15:55
【问题描述】:
背景:我有一个包含 4000 万行的巨大 DataFrame。我必须在某些列上运行一些功能。循环花费的时间太长,所以我决定使用 Multiprocessing。
CPU:8核16线程
内存:128 GB
问题:我应该将数据分成多少块?有多少工人适合这个数据集?
附言我发现当我设置 max_workers = 15 时,所有线程都在 100% 运行。但是如果我将 max_workers 更改为 40,它们会下降到 40%。
谢谢!
【问题讨论】:
标签:
python
multiprocessing
large-data
【解决方案1】:
并行计算分为三种类型。这些是 io 密集型、cpu 密集型和 io-cpu 密集型计算。
如果您的线程在 CPU 密集型任务上运行,那么您可以增加您的工作人员数量,因为您希望获得更好的性能。
但是如果运行在io密集型上,增加它们就没有效果了。
您似乎正在处理 io-cpu 密集型任务。
所以如果你增加worker数量,你可以得到很好的结果,直到没有使用io资源(硬盘)的竞争
所以在本地机器上。增加工人数量不是一个好的选择。
您可以在 GPS 或 AWS 上使用 Hadoop 来完成这项工作。