Подтвердить что ты не робот

Почему я не могу получить исключение 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' не имеет атрибута "Пустое" исключение.

4b9b3361

Ответ 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'