在 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明确记录 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/