【问题标题】:python 3.6 multiprocessing.Pool() very slow to start using Windowspython 3.6 multiprocessing.Pool() 开始使用 Windows 非常慢
【发布时间】:2018-09-23 20:33:30
【问题描述】:

在 Windows 10、AMD Threadripper 16 核 CPU、64 GB RAM、快速 SSD 上运行 Python 3.6.4(64 位)。在我开始这个测试之前,没有其他东西正在运行(

我们将不胜感激任何修复、解决方法、想法或解释。谢谢。

import multiprocessing as mp
import time

for x in range(2,15):
    t0 = time.perf_counter()
    with mp.Pool(processes=x) as pool:
        pass
    print('Done {0} processes in {1:.2f}s'.format(x, time.perf_counter() - t0))

Done 2 processes in 0.79s
Done 3 processes in 1.34s
Done 4 processes in 2.18s
...
Done 12 processes in 6.44s
Done 13 processes in 5.45s
Done 14 processes in 5.73s

【问题讨论】:

  • 奇怪,我得到一个一致的0.11s。但那是在 linux 上,所以可能是平台差异。
  • @Azsgy 我看到你列出的完全相同的结果,也使用 Linux。无法重现 OP 的计时结果。
  • This discussion 关于 Windows 与 Linux 中新进程的“spawn”与“fork”可能是相关的。

标签: python windows multiprocessing


【解决方案1】:

几个小时后,我确定是 Bitdefender 设置导致了问题。在防病毒下有一个名为“仅扫描新文件和更改文件”的设置。如果设置为关闭,则会发生性能问题。打开它,时间会下降到每 5 个进程 0.11 秒。出于文档目的,我正在运行 Bitdefender AV Plus 2018(截至今天是最新的)。我向 Bitdefender 报告了这个问题,它被升级到了下一层支持。

感谢大家的意见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-11
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2010-12-17
    • 2012-04-08
    相关资源
    最近更新 更多