无法在 python3.6 中导入多处理队列对象

Failed to import multiprocessing Queue object in python3.6

我在 python 中使用多处理库。我有 python 3.6。每当我尝试创建多处理时。 Queue() 对象我得到一个错误。

我的代码如下:

import multiprocessing

def square(arr,q):
    for i in arr:
        q.put(i*i)


arr=[1,2,3,4,5,6]
q=multiprocessing.Queue()
p1=multiprocessing.Process(target=square,args=(arr,q,))

p1.start()
p1.join()

result=[]

while q.empty() is False:
    result.append(q.get())

print(result)

错误是:

Traceback (most recent call last):
  File "qu.py", line 9, in <module>
    q=multiprocessing.Queue()
  File "/usr/lib/python3.6/multiprocessing/context.py", line 101, in Queue
    from .queues import Queue
  File "/usr/lib/python3.6/multiprocessing/queues.py", line 20, in <module>
    from queue import Empty, Full
  File "/home/vivek/Desktop/code/par/queue.py", line 11, in <module>
    q=Queue()
  File "/usr/lib/python3.6/multiprocessing/context.py", line 101, in Queue
    from .queues import Queue
ImportError: cannot import name 'Queue'

正如您在错误回溯中列出的导入链中看到的那样,Python 正在尝试从以下位置导入 Queue 定义:

/home/vivek/Desktop/code/par/queue.py

这表明您以某种方式破坏了 Python 导入逻辑,因为它通常优先考虑 /lib /usr/lib 文件夹中的模块。如果您设置了自定义 PYTHONPATH 环境变量,或者如果您弄乱了 sys.path.

等模块变量,通常会发生这种情况

快速修复是将您的文件从 queue.py 重命名为其他名称。