Python2:multiprocessing.dummy.Pool 对比 multiprocessing.pool.ThreadPool

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

在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 explicitly document the existence of multiprocessing.pool.ThreadPool,所以如果你肯定 使用线程并且永远不想切换,可以说 ThreadPool 更适合明确使用的线程。如果您可能来回切换,那么如果您要做的只是添加和删除 .dummy 来自:

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

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