Python2 : multiprocessing. dummy.Pool 与 multiprocessing.pool.ThreadPool

标签 python python-2.7 threadpool python-multiprocessing python-multithreading

在 python 2 中,multiprocessing.dummy.Poolmultiprocessing.pool.ThreadPool 之间有什么区别吗?源代码似乎暗示它们是相同的。

最佳答案

它们是相同的(在 Py2 和 Py3 上); multiprocessing.dummy.Pool 只是一个导入和调用 multiprocessing.pool.ThreadPool 的瘦包装器。实际代码只是:

def Pool(processes=None, initializer=None, initargs=()):
    from multiprocessing.pool import ThreadPool
    return ThreadPool(processes, initializer, initargs)

一般来说,我更喜欢使用 multiprocessing.dummy.Pool 只是因为存在 multiprocessing.dummy is officially documented ,其中 multiprocessing.pool 不是(这是一个内部实现细节)。

更新:从 Python 3.7 开始,the multiprocessing.dummy docs明确记录 multiprocessing.pool.ThreadPool 的存在,所以如果您肯定使用线程并且永远不想切换,可以说 ThreadPool 更适合明确使用的线程。如果您可能来回切换,那么如果您所要做的就是从以下位置添加和删除 .dummy 会更容易:

from multiprocessing import Pool  # And maybe other imports that need to switch for process vs. threads

所以我建议在这种情况下继续使用 Pool

关于Python2 : multiprocessing. dummy.Pool 与 multiprocessing.pool.ThreadPool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53397632/

相关文章:

python - 两种反转列表的方法之间的输出不一致

python - 为 Windows 7 安装哪个 scipy wheel?

python - 如何从源代码中使用 package_data 中的数据?

python-2.7 - Python 和 NLTK : How to analyze sentence grammar?

asp.net - ASP.NET如何确定是否将请求排队?

multithreading - 带有 OpenMP : overhead and changing the number of threads 的线程池

android - 我在哪里创建和使用 ScheduledThreadPoolExecutor、TimerTask 或 Handler?

python - 在 Python 中使用 Reduce 函数查找阶乘

python - Pandas:将秒数转换为时间增量或时间

python - 如何将文件列表传递给 python open() 方法