Обычно я использую следующий код, и она отлично работает, если вы не имеет значения, в которых функция порядка process_func
будет обрабатывать некоторый параметр:Как реализовать пользовательский контроль над многопроцессорной обработкой python.Pool?
params = [1,2,3,4,5 ... ]
def process_func():
...
pool = new Pool(40)
pool.map(process_func, params)
pool.close()
pool.join()
В приведенном выше примере мы имеем процессы одного типа, с максимальным Simultanious числом 40 Но ... представьте, что у нас есть процессы (параметры) различного типа, которые должны выполняться одновременно. Например, в моей сетке селена у меня 40 firefox, 40 хром. И у меня 5000 тестовых примеров, некоторые из них предпочитают хром, некоторые из них - firefox, некоторые из них не имеют значения.
Например, предположим, что мы имеем следующие типы:
- типа FireFox: максимальное Simultanious число: 40
- типа хром: максимальное Simultanious число: 40
В этом случае наш бассейн будет иметь максимум 80 одновременных процессов, но существует строгое правило: 40 из них должны быть firefox, 40 из них должны быть хромами.
Это означает, что параметры не будут приняты один за другим. Пул должен выбрать значение из списка параметров, чтобы иметь максимум каждого типа процесса.
Как это можно достичь?
Есть ли причина не просто использовать два пула и два списка входов? –