Python 线程池
什么是线程池
线程池是一种自动管理工作线程池的机制。池中的每个线程被称为工作者线程或工作线程。一旦任务完成,工作线程可以被重复使用。每个线程只能执行一次任务。
线程池控制何时创建线程,以及线程在闲置时应该做什么。
使用线程池比手动启动、管理和关闭线程要高效得多,尤其是在有大量任务的情况下。
Python中的多线程可同时执行特定函数。可以通过concurrent.futures模块中定义的ThreadPoolExecutor类实现多线程对函数的异步执行。
concurrent.futures模块包括Future类和两个Executor类–ThreadPoolExecutor和ProcessPoolExecutor。
Future类
concurrent.futures.Future类负责处理任何可调用对象的异步执行,如函数。要获取Future类的对象,应该在任何Executor对象上调用submit()方法。不应该直接通过构造函数来创建Future类对象。
Future类中的重要方法有:
result(timeout=None)
此方法返回调用的结果值。如果调用尚未完成,则此方法将等待timeout秒。如果在timeout秒内调用未完成,则会引发TimeoutError。如果未指定timeout,则等待时间没有限制。
cancel()
此方法尝试取消调用。如果调用当前正在执行或完成运行且无法取消,则该方法返回False,否则将取消调用并返回True。
cancelled()
此方法如果成功取消调用,则返回True。
running()
此方法如果调用当前正在执行且无法取消,则返回True。
done()
此方法如果成功取消调用或完成运行,则返回True。
ThreadPoolExecutor类
该类表示池中指定数量的最大工作线程,以异步方式执行调用。
示例
它将产生以下 输出 −