Python的concurrent.futures
库提供了ThreadPoolExecutor
类,它是一个高效的线程池实现
import concurrent.futures
def my_function(x):
# 在这里执行你的任务
return x * x
ThreadPoolExecutor
实例,并指定线程池中的最大线程数。然后,使用submit()
方法将任务添加到线程池中:with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
# 提交任务并将Future对象存储在列表中
futures = [executor.submit(my_function, i) for i in range(10)]
as_completed()
方法迭代已完成的任务,并获取结果:for future in concurrent.futures.as_completed(futures):
result = future.result()
print(result)
下面是一个完整的示例:
import concurrent.futures
def my_function(x):
return x * x
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
futures = [executor.submit(my_function, i) for i in range(10)]
for future in concurrent.futures.as_completed(futures):
result = future.result()
print(result)
这个示例将创建一个包含5个线程的线程池,并将10个任务提交给线程池。每个任务都会计算一个数字的平方。当任务完成时,它们的结果将按照完成顺序打印出来。