Найти в Дзене

Добавлен метод shutdown в класс asyncio.Queue в Python

Гвидо Ван Россум пару лет назад поднял вопрос:
👨🏻‍🔧 Рассмотрим типичного воркера, который получает элементы из asyncio.Queue. Это может быть такой цикл: ❓ Как производитель мог бы указать воркеру, что рабочих элементов не осталось? 👥 asyncio.Queue- это объект очереди, и представляет собой механизм для передачи данных между асинхронными задачами. Очереди обеспечивают асинхронный обмен данными между задачами, где одна может поместить данные в очередь (enqueue), а другая может извлечь их (dequeue) методами put() и get() соответственно. 👉 Пример использования: 🤔 При работе с очередями нередко случается, что в какой-то момент производитель перестает производить данные навсегда, или потребитель перестает их потреблять. Как узнать, когда все элементы в очереди были обработаны потребителями?
💤 Люди, чтобы решить эту проблему, используют свои "костыли", но с подачи Гвидо добавили метод shutdown в класс asyncio.Queue, который завершает очередь. При попытке получить данные из очереди или

Гвидо Ван Россум пару лет назад поднял вопрос:

👨🏻‍🔧 Рассмотрим типичного воркера, который получает элементы из
asyncio.Queue. Это может быть такой цикл:

-2

❓ Как производитель мог бы указать воркеру, что рабочих элементов не осталось?

👥 asyncio.Queue- это объект очереди, и представляет собой механизм для передачи данных между асинхронными задачами. Очереди обеспечивают асинхронный обмен данными между задачами, где одна может поместить данные в очередь (enqueue), а другая может извлечь их (dequeue) методами put() и get() соответственно.

👉 Пример использования:

-3

🤔 При работе с очередями нередко случается, что в какой-то момент производитель перестает производить данные навсегда, или потребитель перестает их потреблять. Как узнать, когда все элементы в очереди были обработаны потребителями?

💤 Люди, чтобы решить эту проблему, используют свои "костыли", но с подачи Гвидо
добавили метод shutdown в класс asyncio.Queue, который завершает очередь. При попытке получить данные из очереди или записать в очередь вызовется исколючение queue.QueueShutDown.

✅ В
threading и multiprocessing тоже есть свои реализации очереди. В threading данный метод добавлен чуть ранее, но в multiprocessing еще нет. Нет ревьюера.