以下是一个示例代码,创建了5个线程池,每个线程池分配100条数据:

import concurrent.futures

def process_data(data):
    # 处理数据的函数
    ...

def main():
    # 创建线程池
    with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
        # 准备数据
        data_list = [i for i in range(500)]
        chunk_size = len(data_list) // executor._max_workers
        data_chunks = [data_list[i:i+chunk_size] for i in range(0, len(data_list), chunk_size)]
        # 分配任务给线程池
        futures = [executor.submit(process_data, data_chunk) for data_chunk in data_chunks]
        # 等待所有任务完成
        concurrent.futures.wait(futures)

if __name__ == '__main__':
    main()

在这个示例中,我们首先创建了一个包含500个元素的数据列表。然后,根据线程池的最大工作线程数(5)将列表分成了5个块,每个块包含100个元素。接下来,我们使用 executor.submit() 方法将每个块作为参数传递给 process_data() 函数,并将返回的 Future 对象存储在 futures 列表中。最后,我们使用 concurrent.futures.wait() 方法等待所有任务完成。

ThreadPoolExecutor 创建5个线程池每个线程池平均分配list里面的数据list大小有500条

原文地址: https://www.cveoy.top/t/topic/bVRD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录