Python Многопроцессорная очередь
Я заполняю очередь набором заданий, которые я хочу выполнять параллельно, и использую для этого многопроцессорный модуль python. Фрагмент кода ниже:
import multiprocessing
from multiprocessing import Queue
queue = Queue()
jobs = [['a', 'b'], ['c', 'd']]
for job in jobs:
queue.put(job)
Когда я делаю queue.get(), я получаю следующее:
['a', 'b']
Почему очередь не заполняется всеми заданиями?
2 ответа
Решение
Очередь фактически наполняется. Вам нужно вызывать queue.get() каждый раз, когда вы помещаете объект в очередь. Так что вам просто нужно вызвать queue.get() еще раз.
>>> import multiprocessing
>>> from multiprocessing import Queue
>>> queue = Queue()
>>> jobs = [['a', 'b'], ['c', 'd']]
>>> for job in jobs:
queue.put(job)
>>> queue.get()
['a', 'b']
>>> queue.get()
['c', 'd']
Очередь заполняется всеми вашими заданиями. queue.get () будет
Удалить и вернуть элемент из очереди.
Предмет единственного числа. Если вы хотите опустошить очередь, то просто поставьте .get()
в цикле, но обязательно перехватите исключение Пусто.