Python Multiprocessing: pool.map с использованием очередей

Я пытаюсь использовать пакет multiprocessing для Python. При изучении учебников наиболее ясный и простой метод, по-видимому, использует pool.map, который позволяет пользователю легко определить количество процессов и передать функцию pool.map и список значений для этой функции для распространения по центральным процессорам, Другой метод, с которым я столкнулся, - использование очередей для управления пулом работников. Этот ответ дает отличную работу, объясняющую разницу между pool.map, pool.apply и pool.apply_async, но каковы преимущества и недостатки использования pool.map против используя очереди, как в этом пример?

Ответ 1

Метод pool.map - это "подмножество" метода с очередями. То есть без pool.map вы можете легко реализовать его с помощью Pool и Queue. Тем не менее, использование очередей дает вам большую гибкость в управлении процессами пула, т.е. Вы можете сделать так, чтобы отдельные типы сообщений читались только один раз за время жизни каждого процесса, контролировали поведение выключения пула и т.д.

Ответ 2

Если вы действительно ищете "самую ясную и самую простую технику", использование concurrent.futures.ProcessPoolExecutor, вероятно, самый простой способ. Он имеет метод map, а также некоторые другие примитивы, которые делают его очень удобным. Он также совместим с Queue s.