2015-11-18 68 views
2

我在Python遇到了一个奇怪的事情:multiprocessing.dummy为什么AttributeError的: '模块' 对象有没有属性 '假'

>>> 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

回答

0

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'. 

我猜子包中故意隐藏防止人们不期而遇使用它。

+0

我尝试在''multiprocessing/__ init __。py'','multiprocessing.dummy'中的'__all__'中添加''dummy'',但仍然不起作用。 – WeizhongTu

相关问题