文章目录
- 1 conturrent包
- 2 future模块
- 3 ThreadPoolExecutor对象
- 4 Future对象
- 5 ProcessPoolExecutor对象
- 6 支持上下文管理
- 7 异步爬网站的小例子
1 conturrent包
conturrent包内只包含了一个future模块,它为异步执行调用提供了高级的接口。
2 future模块
主要提供了两个用于异步执行的类:
- ThreadpPoolExecutor:异步调用的线程池的执行器
- ProcessPoolExecutor:异步调用的进程池的执行器
两者实现相同的接口,该接口由抽象Executor类定义。
3 ThreadPoolExecutor对象
提供了以下方法用于构建和执行多线程任务:
方法 | 含义 |
---|---|
ThreadpPoolExecutor(max_workers=None, thread_name_prefix=’’) | 池中至多创建max_workers个线程的池来同时异步执行,返回Executor实例,如果max_workers没有指定,那么会开启cpu核数(或1) * 5 个线程 |
submit(fn, *args, **kwargs) | 提交执行的函数及其参数,返回Future类的实例 |
shutdown(wait=True) | 清理池 |
基本使用:
import concurrent.futures
def worker(name, count=1000):
total = 0
for i in range(count):
total += 1
return name, total
fs = []
executor = concurrent.futures.ThreadPoolExecutor(max_workers=3) # 线程池为3
for i in range(3<