На этом шаге мы рассмотрим особенности использования этого класса для организации очереди.
Такая реализация очереди совместных заданий позволяет выполнять параллельную обработку находящихся в очереди элементов многочисленными параллельными рабочими процессами.
См. документацию 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() # Блокирует / ожидает бесконечно...
На следующем шаге мы подитожим изученный материал.