gpt4 book ai didi

python - Python的multiprocessing包中,为什么会有multiprocessing.Pool和multiprocessing.pool.Pool?

转载 作者:行者123 更新时间:2023-11-28 16:31:18 29 4
gpt4 key购买 nike

在了解 Python 的 multiprocessing 包(对于 Python 3.4 )时,我注意到 multiprocessing.Pool 是在类 BaseContext 中定义的 上下文.py。这个定义是

   def Pool(self, processes=None, initializer=None, initargs=(),
maxtasksperchild=None):
'''Returns a process pool object'''
from .pool import Pool
return Pool(processes, initializer, initargs, maxtasksperchild,
context=self.get_context())

因此,它最终会调用 pool.py 中定义的 multiprocessing.pool.Pool

为什么 multiprocessing 包定义了 multiprocessing.Poolmultiprocessing.pool.Pool

最佳答案

context.py 包含操作系统相关代码。 Pool 和许多其他值是根据是否 sys.platform == 'win32' 定义不同。

pool.py 模块包含与创建池相关的代码给定上下文

通过以这种方式组织代码,开发人员设法以与操作系统无关的方式编写 pool.py。例如,pool.py 中没有 if sys.platform ... 语句。


__init__.py 包含:

globals().update((name, getattr(context._default_context, name))
for name in context._default_context.__all__)
__all__ = context._default_context.__all__

它将值从 context._default_context 复制到 multiprocessing 包的命名空间中。这就是 multiprocessing.Pool 的定义方式。

作为 multiprocessing 包的用户,您应该访问池通过 multiprocessing.Pool,尽管可以使用multiprocessing.pool.Pool 也是。

关于python - Python的multiprocessing包中,为什么会有multiprocessing.Pool和multiprocessing.pool.Pool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31665641/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com