在Python中,可以使用concurrent.futures
模块中的ThreadPoolExecutor
类来创建和管理线程池。线程池可以帮助你更有效地利用系统资源,避免因为创建过多线程而导致的性能问题。
下面是一个简单的示例,展示了如何使用ThreadPoolExecutor
来执行多个任务:
import concurrent.futures
import time
def task(n):
print(f"Task {n} started")
time.sleep(n) # 模拟任务执行时间
print(f"Task {n} completed")
return n * n
def main():
# 创建一个线程池,最多可以同时运行3个线程
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
# 提交任务到线程池
tasks = [executor.submit(task, i) for i in range(1, 6)]
# 获取任务结果
for future in concurrent.futures.as_completed(tasks):
result = future.result()
print(f"Task result: {result}")
if __name__ == "__main__":
main()
在这个示例中,我们定义了一个名为task
的函数,它接受一个参数n
,模拟执行一个耗时n
秒的任务。在main
函数中,我们创建了一个最大工作线程数为3的线程池,然后提交了5个任务到线程池。线程池会自动分配任务给空闲的线程,并在任务完成后返回结果。
注意,with
语句用于确保线程池在执行完毕后正确关闭。这是一个很好的实践,可以避免因为忘记关闭线程池而导致的资源泄漏问题。