Pat*_*k R 7 import multiprocessing
在处理 Python 并行编程一书中的示例时,我在使用多处理队列的代码中遇到了以下错误:
File "C:\pyDev\multiproc\queue-test.py", line 4, in <module>
queue = multiprocessing.Queue()
File "C:\Anaconda3\Lib\multiprocessing\context.py", line 100, in Queue
from .queues import Queue
File "C:\Anaconda3\Lib\multiprocessing\queues.py", line 20, in <module>
from queue import Empty, Full
builtins.ImportError: cannot import name 'Empty'
Run Code Online (Sandbox Code Playgroud)
经过一些实验,我确定生成此错误所需的只是以下代码(这是上面错误消息中提到的整个 queue-test.py 文件)。
import multiprocessing
if __name__ == "__main__":
queue = multiprocessing.Queue()
Run Code Online (Sandbox Code Playgroud)
我在一台装有 Anaconda 4.1.0 的机器上运行 Python 3.5.1 和 Windows 7。我已经将上面的代码和书中的示例移植到另一台装有 Python 2.7.11 和 Anaconda 2.5.0、Windows 10 和它在那台机器上工作正常。
考虑到我的 Python 安装可能存在损坏的文件或其他问题,我尝试重新安装 Anaconda,但没有帮助。我执行了谷歌搜索,并没有发现这个特定的错误。其他 stackoverflow 帖子,例如在此处找到的帖子:ImportError: Cannot import name X似乎无关紧要,因为这涉及 Python 标准库的一部分,而不是我自己编写的代码和类。
小智 7
我在我的代码中遇到了几乎相同的错误,最后找出了哪里出错了。希望它会以某种方式帮助你。
我将我的 python 脚本命名为“queue.py”,然后运行它,我得到了错误信息。下面就像你的一样:
Traceback (most recent call last):
File "F:/02_Coding/01_Projects/PyHomeWork/Day23_Process/queue.py", line 19, in <module>
queue = multiprocessing.Queue()
File "E:\02_CodingSoftware\02_Installed\Anaconda3\lib\multiprocessing\context.py", line 101, in Queue
from .queues import Queue
File "E:\02_CodingSoftware\02_Installed\Anaconda3\lib\multiprocessing\queues.py", line 20, in <module>
from queue import Empty, Full
ImportError: cannot import name 'Empty'
Run Code Online (Sandbox Code Playgroud)
我使用下面的方法来创建一个队列:
if __name__ =="__main__":
queue = multiprocessing.Queue()
Run Code Online (Sandbox Code Playgroud)
最后,我注意到我不应该将文件命名为“queue.py”,这似乎会在解释脚本时对 python 造成误导。在我重命名脚本后,错误消失了。多么愚蠢的错误,大声笑。
所以我的建议是,也许您可以检查您的文件夹下是否有名为“queue.py”的脚本,或者任何自定义模块会与库中的脚本冲突。
希望你能解决问题。最好的事物
| 归档时间: |
|
| 查看次数: |
2170 次 |
| 最近记录: |