这篇文章主要介绍了python程序中的线程操作 concurrent模块使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一、concurrent模块的介绍
concurrent.futures
模块提供了高度封装的异步调用接口
ThreadPoolExecutor
线程池,提供异步调用
ProcessPoolExecutor
进程池,提供异步调用
ProcessPoolExecutor
和 ThreadPoolExecutor
两者都实现相同的接口,该接口由抽象Executor类定义。
二、基本方法
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)
:回调函数
三、进程池和线程池
池的功能:限制进程数或线程数.
什么时候限制: 当并发的任务数量远远大于计算机所能承受的范围,即无法一次性开