在处理 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 标准库的一部分,而不是我自己编写的代码和类。