Python创建线程池完成任务
时间: 2024-02-02 07:44:17 浏览: 72
线程池是一种常用的并发编程技术,它可以帮助我们在多线程环境下更好地管理线程资源,避免线程频繁创建和销毁的开销,提高程序的效率。Python提供了ThreadPoolExecutor和ProcessPoolExecutor两个线程池类,可以帮助我们快速创建和管理线程池。以下是一个使用ThreadPoolExecutor实现线程池完成任务的示例代码:
```python
import concurrent.futures
import time
def task(n):
print(f'Task {n} started')
time.sleep(1)
print(f'Task {n} finished')
if __name__ == '__main__':
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
tasks = [executor.submit(task, i) for i in range(5)]
for future in concurrent.futures.as_completed(tasks):
future.result()
```
这个代码中,我们创建了一个ThreadPoolExecutor对象,设置最大线程数为3。然后创建了5个任务,每个任务都是一个函数task,它会打印出任务开始和结束的信息,并睡眠1秒钟模拟任务执行。使用executor.submit方法将任务提交到线程池中,返回值是一个future对象,表示任务的执行结果。最后使用concurrent.futures.as_completed方法等待所有任务执行完成,并打印出任务的执行结果。
当我们运行这个代码时,我们会发现任务会依次执行,每次最多有3个任务同时执行,其它任务则等待线程池中的线程执行完毕后再执行。这样就可以更好地管理线程资源,避免线程频繁创建和销毁的开销,提高程序的效率。
阅读全文