在python2中,multiprocessing.dummy.Pool和multiprocessing.pool.ThreadPool之间有什么区别吗?源代码似乎暗示着它们是一样的。
发布于 2018-11-20 16:46:46
它们是相同的(在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 正式记录的存在,其中multiprocessing.pool不是(这是内部实现细节)。
更新:从Python3.7开始,文档显式地记录了multiprocessing.pool.ThreadPool的存在,所以如果您确实在使用线程,并且永远不想切换,那么可以说ThreadPool更适合于显式地说明正在使用的线程。如果您可能要来回切换,那么如果只需从以下位置添加和删除.dummy就更容易了:
from multiprocessing import Pool # And maybe other imports that need to switch for process vs. threads因此,我建议在这种情况下继续使用Pool。
https://stackoverflow.com/questions/53397632
复制相似问题