でキューを開始することはできません、次の簡単なスクリプトはのpython3ではImportErrorが発生します。はのpython3
from multiprocessing import Queue
queue = Queue()
print("OK")
このエラーを再現するための鍵は、このファイルqueue.py
に名前を付けることで、その後、次のメッセージが表示されます。
Traceback (most recent call last):
File "queue.py", line 3, in <module>
queue = Queue()
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/context.py", line 100, in Queue
from .queues import Queue
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/queues.py", line 20, in <module>
from queue import Empty, Full
File "/home/wangc/temp/queue.py", line 3, in <module>
queue = Queue()
File "/home/wangc/app/anaconda/lib/python3.5/multiprocessing/context.py", line 100, in Queue
from .queues import Queue
ImportError: cannot import name 'Queue'
ファイルの名前がqueueue.py
の場合はすべて問題ありません。
マルチプロセッシングモジュールは、マルチプロセッシングモジュール内のあるファイルと名前が一致するため、キューをmy queue.pyからインポートしようとしているからです。
しかし、もしそれがどのようにPythonが動作するのであれば、私は可能な内部ライブラリのファイル名を避けるべきです。実用的ではありません。
このエラーは、私のファイルのファイル名とマルチプロセッシングモジュールのファイルの名前に起因しますか?そうであれば、私のファイル名が一般的なプログラミングで可能なライブラリのファイルと異なることをどうやって保証できますか?
'Queue'は実際には標準のlibの' queue'パッケージから来ています。 –
これは本当にpythonの仕組みです - http://stackoverflow.com/questions/1224741/trying-to-import-module-with-the-name-name-as-a-built-in-module-causes- an-import – daveruinseverything
次に、可能なライブラリの名前を避けるべきです。どうやってやるの? –