Шаг 131.
Python: тонкости программирования. Общие структуры данных Python. Очереди (с дисциплиной доступа FIFO). multiprocessing.Queue - очереди совместных заданий

    На этом шаге мы рассмотрим особенности использования этого класса для организации очереди.

    Такая реализация очереди совместных заданий позволяет выполнять параллельную обработку находящихся в очереди элементов многочисленными параллельными рабочими процессами.


См. документацию Python "multiprocessing.Queue": https://docs.python.org/3.6/library/multiprocessing.html#multiprocessing.Queue.

    Процессно-ориентированное распараллеливание популярно в Python из-за глобальной блокировки интерпретатора (GIL), которая препятствует некоторым формам параллельного исполнения в единственном процессе интерпретатора.

    В качестве специализированной реализации очереди, предназначенной для обмена данными между процессами, очередь multiprocessing.Queue упрощает распределение работы по многочисленным процессам с целью преодоления ограничений GIL. Этот тип очереди может хранить и передавать любой консервируемый (модулем pickle) объект через границы процессов.

>>> from multiprocessing import Queue
>>> q = Queue()
>>> s.put('есть')
>>> s.put('спать')
>>> s.put('программировать')
>>> q
<multiprocessing.queues.Queue object at 0x0000019E0F5884C0>
>>> q.get()
'есть'
>>> q.get()
'спать'
>>> q.get()
'программировать'
>>> q.get()
# Блокирует / ожидает бесконечно...

    На следующем шаге мы подитожим изученный материал.




Предыдущий шаг Содержание Следующий шаг