concurrent.futures
ProcessPoolExecutor
进程池,提供异步调用
基本方法
submit(fn, args, *kwargs) 异步提交任务
map(func, *iterables, timeout=None, chunksize=1) 取代for循环submit的操作
shutdown(wait=True) 相当于进程池的pool.close()+pool.join()操作
wait=True,等待池内所有任务执行完毕回收完资源后才继续
wait=False,立即返回,并不会等待池内的任务执行完毕
但不管wait参数为何值,整个程序都会等到所有任务执行完毕
submit和map必须在shutdown之前result(timeout=None)取得结果
add_done_callback(fn)回调函数
1 | from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor |
ThreadPoolExecutor
线程池,提供异步调用,用法与ProcessPoolExecutor相同,只需要将ProcessPoolExecutor换成ThreadPoolExecutor
1 | import time |