Ограничить количество одновременных потоков многопроцессорной обработки - PullRequest
1 голос
/ 17 октября 2019

Мне нужно применить функцию к каждому элементу итерируемого с фиксированным числом потоков (скажем, N), работающих одновременно, как это делает multiprocessing.ThreadPool.map (), но моя функция выполняет назначения глобальным объектам и невернуть что-нибудь. Как я могу ограничить количество одновременных потоков, не используя карту и не тратя память на список Nones?

def function(x):
    print(x)
    # do some actions, don't return anything

iterable = list(range(1000_000))

import multiprocessing.pool as mp
import os

N = os.cpu_count()

with mp.ThreadPool(N) as pool:
    _ = pool.map(function, iterable)
    # returns unnecessary list of Nones
...