【问题标题】:multiprocessing.dummy why AttributeError: 'module' object has no attribute 'dummy'multiprocessing.dummy 为什么 AttributeError: 'module' 对象没有属性 'dummy'
【发布时间】:2015-11-18 08:11:08
【问题描述】:

我在 Python 中遇到了一件奇怪的事情:

>>> import multiprocessing

>>> thread_pool = multiprocessing.dummy.Pool()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'dummy'

但是,当我尝试以下操作时:

>>> from multiprocessing.dummy import Pool as ThreadPool
>>> ThreadPool()
<multiprocessing.pool.ThreadPool object at 0x7faf9308d4a8>

>>> import multiprocessing.dummy
>>> multiprocessing.dummy.Pool()
<multiprocessing.pool.ThreadPool object at 0x7faf9308d2e8>

一切正常。 我知道import xxxfrom xxx import 之间的区别,我想知道它为什么会引发AttributeError。 我的问题是为什么我不能在import multiprocessing 之后使用multiprocessing.dummy

【问题讨论】:

    标签: python module multiprocessing python-import


    【解决方案1】:

    multiprocessing.dummy 包未导入multiprocessing.__init__.py。因此,

    >>> import multiprocessing
    
    >>> thread_pool = multiprocessing.dummy.Pool()
    

    不起作用。形成文档字符串:

    # This package is intended to duplicate the functionality (and much of
    # the API) of threading.py but uses processes instead of threads.  A
    # subpackage 'multiprocessing.dummy' has the same API but is a simple
    # wrapper for 'threading'.
    

    我猜想子包是故意隐藏以防止人们意外使用它。

    【讨论】:

    • 我尝试在multiprocessing/__init__.py 中添加'dummy'__all__multiprocessing.dummy 仍然不起作用。
    猜你喜欢
    • 2021-01-15
    • 2015-05-16
    • 1970-01-01
    • 2022-12-20
    • 2018-01-14
    • 2014-08-15
    • 2016-07-17
    • 2015-05-26
    • 2016-02-07
    相关资源
    最近更新 更多