ThreadPoolExecutor 创建5个线程池每个线程池平均分配list里面的数据list大小有500条
以下是一个示例代码,创建了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() 方法等待所有任务完成。
原文地址: https://www.cveoy.top/t/topic/bVRD 著作权归作者所有。请勿转载和采集!