首页 > 解决方案 > 限制并发线程数

问题描述

我需要将一个函数应用于具有固定数量的线程(假设 N)同时运行的可迭代的每个元素,就像 multiprocessing.ThreadPool.map() 一样,但是我的函数对全局对象进行分配并且不返回任何内容。如何限制并发线程的数量而不使用映射并为无列表浪费内存?

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

标签: pythonmultithreadingmultiprocessingpython-multiprocessing

解决方案


推荐阅读