Почему я не могу получить исключение Queue.Empty из очереди многопроцессорности?
Я пытаюсь поймать исключение Queue.Empty, которое возникает, если многопроцессорность .Queue пуста. Не работает следующее:
import multiprocessing
f = multiprocessing.Queue()
try:
f.get(True,0.1)
except Queue.Empty:
print 'foo'
Это дает мне ошибку имени: NameError: имя "Очередь" не определено
заменяет Queue.Empty многопроцессорным .Queue.Empty тоже не помогает. В этом случае он дает мне объект AttributeError: 'function' не имеет атрибута "Пустое" исключение.
Ответы
Ответ 1
Исключение Empty
, которое вы ищете, недоступно непосредственно в модуле multiprocessing
, потому что multiprocessing
заимствует его из модуля Queue
(переименованного Queue
в Python 3). Чтобы заставить ваш код работать, просто сделайте import Queue
вверху:
Попробуйте следующее:
import multiprocessing
import Queue # or queue in Python 3
f = multiprocessing.Queue()
try:
f.get(True,0.1)
except Queue.Empty: # Queue here refers to the module, not a class
print 'foo'