Не удалось импортировать объект многопроцессорной очереди в python3.6 - PullRequest
0 голосов
/ 26 декабря 2018

Я использовал многопроцессорную библиотеку в 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'

1 Ответ

0 голосов
/ 26 декабря 2018

Как видно из цепочки импорта, указанной в трассировке ошибок, Python пытается импортировать определение Queue из:

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

Это указывает на то, что вы как-то нарушили логику импорта Python, как обычнорасставляет приоритеты модулей в папках /lib /usr/lib.Обычно это происходит, если вы устанавливаете свою пользовательскую переменную среды PYTHONPATH или если вы связываетесь с переменными модуля, такими как sys.path.

Быстрое исправление - переименование файла из queue.py во что-то другое.

...