下面是一个示例代码,使用线程池从列表中取数据并处理:

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]

可以看到,线程池中的两个线程分别处理了输入的数据,并将处理后的结果返回。最后,得到了一个包含所有处理后数据的列表。

python 通过线程池从列表中取数据并处理

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

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