Python2:multiprocessing.dummy.Pool 对比 multiprocessing.pool.ThreadPool
Python2: multiprocessing.dummy.Pool vs multiprocessing.pool.ThreadPool
在python 2、multiprocessing.dummy.Pool
和multiprocessing.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
。
在python 2、multiprocessing.dummy.Pool
和multiprocessing.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
。