Python并发编程—concurrent.futures
Executor
concurrent.futures.Executor: 一个抽象类,提供了异步执行调用的方法。一般都是通过调用子类来使用。
方法
submit(fn, *args, **kwargs):执行可调用对象,返回一个Future对象表示执行的可调用对象
map(func, *iterables, timeout=None, chunksize=1):使用时ProcessPoolExecutor,此方法将iterables切割 为多个块,并将其作为单独的任务提交给池。chunksize设置分块大小。使用时ThreadPoolExecutor时,chunksize无效
shutdown(wait=True):告executor执行者执行完毕,释放资源
ThreadPoolExecutor
ThreadPoolExecutor 是一个 Executor 子类,它使用一个线程池来异步执行调用。
concurrent.futures.ThreadPoolExecutor(max_workers=None, thread_name_prefix=’’)
参数
max_workers: 设置线程数量
thread_name_prefix: 以允许用户控制由池创建的工作线程的线程名
ProcessPoolExecutor
ProcessPoolExecutor 类是一个 Executor 子类,它使用进程池来异步执行调用
concurrent.futures.ProcessPoolExecutor(max_workers=None, mp_context=None, initializer=None, initargs=())
参数
max_workers:设置进程数量
mp_context:
initializer:initializer是一个可选的callable,在每个工作进程的开头调用; initargs是传递给初始化程序的参数元组。
Future
Future 类封装了一个可调用的异步执行。 Future 实例由 Executor.submit() 创建。
方法
cancel():尝试取消呼叫。如果呼叫当前正在执行并且不能被取消,则该方法将返回 False,否则呼叫将被取消,并且该方法将返回 True。
cancelled():如果呼叫成功取