concurrent.futures
3.2版本引入模块
异步并行任务编程模块,提供一个高级的异步可执行的便利接口。
提供了2个池执行器
ThreadPoolExecutor异步调用的线程池的Executor
ProcessPoolExecutor异步调用的进程池的Executor
ThreadPoolExecutor
首先需要定义一个池的执行器对象,Executor类子类对象
方法 | 含义 |
---|---|
ThreadPoolExecutor(max_workers=1) | 池中至多创建max_workers个线程的池来同时异步执行,返回Executor实例 |
submit(fn,*args,**kwargs) | 提交执行的函数及其参数,返回Future类的实例 |
shutdown(wait=True) | 清理池 |
Future类
方法 | 含义 |
---|---|
done() | 如果调用被成功的取消或执行完成返回True |
cancelled() | 如果调用被成功取消,返回True |
running() | 如果正在运行且不能被取消,返回True |
cancel() | 尝试取消调用,如果已经执行且不能取消返回False,否则返回True |
result(timeout=None) | 取返回的结果,timeout为None,一直等待返回,timeout设置到期,抛出concurrent,futures.TimeoutError异常 |
exception(timeout=None) | 取返回异常,timeout为None,一直等待返回,timeout设置到期 ,抛出concurrent,futures.TimeoutError异常 |