python 通过线程池从列表中取数据并处理
下面是一个示例代码,使用线程池从列表中取数据并处理:
import concurrent.futures
data_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def process_data(data):
# 处理数据的函数
print(f"Processing data: {data}")
return data * 2
# 创建线程池
with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:
# 提交任务到线程池
future_list = [executor.submit(process_data, data) for data in data_list]
# 获取处理后的数据
processed_data_list = [future.result() for future in concurrent.futures.as_completed(future_list)]
print(processed_data_list)
这个示例代码中,首先定义了一个包含 10 个数据的列表 data_list,然后定义了一个处理数据的函数 process_data,这个函数会将输入的数据乘以 2 并打印出来。
接下来使用 concurrent.futures.ThreadPoolExecutor 创建了一个线程池,最大线程数为 2。然后通过 executor.submit 方法将所有数据的处理任务提交到线程池中,并将返回的 Future 对象添加到列表 future_list 中。
最后通过 concurrent.futures.as_completed 函数获取已完成的 Future 对象,并从中获取处理后的数据,将其添加到列表 processed_data_list 中。
输出结果为:
Processing data: 1
Processing data: 2
Processing data: 3
Processing data: 4
Processing data: 5
Processing data: 6
Processing data: 7
Processing data: 8
Processing data: 9
Processing data: 10
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
可以看到,线程池中的两个线程分别处理了输入的数据,并将处理后的结果返回。最后,得到了一个包含所有处理后数据的列表。
原文地址: https://www.cveoy.top/t/topic/y5f 著作权归作者所有。请勿转载和采集!