在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
语句用于确保线程池在执行完毕后正确关闭。这是一个很好的实践,可以避免因为忘记关闭线程池而导致的资源泄漏问题。