【发布时间】:2021-04-27 10:34:51
【问题描述】:
我正在处理我首先读入的数百万个文件,修改内容然后将其写回磁盘。我有一个线程池,我可以在其中传递应该并行运行的作业数量:
pool = mp.Pool(args.num_processes)
因为我有 24 个 CPU 内核,所以我通过了 24 个。
但是,由于我做了很多磁盘 IO,从磁盘读取,写入磁盘。我应该增加要并行化的进程数吗?
或者在这种情况下会出现资源争用,宁愿放慢速度?
【问题讨论】:
-
您可以简单地试验提供最佳性能的进程数(可能使用一小部分文件),因为很可能会有一个最佳进程数,其中 IO 或 CPU 成为瓶颈(并且添加更多进程不会再加速您的代码)。根据存储介质(和文件)的速度和类型,IO 可能已经成为 ≤ 24 个进程的瓶颈。
-
我完全同意@luuk - 您最好的选择通常是运行比较测试以确定最佳进程数。即使您认为自己了解应用在 CPU、I/O 带宽和 I/O 延迟方面的配置文件,您也会经常发现您最初的猜测与实际的最佳数字相差甚远。
-
我想知道为什么这个问题被否决了?在创建此问题之前,我进行了搜索和调查。
标签: python multiprocessing python-3.6 threadpool python-3.7