从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor(线程池)和ProcessPoolExecutor(进程池)两个类。相比threading等模块,该模块通过submit返回的是一个future对象,它是一个未来可期的对象,通过它可以获悉线程的状态。主线程中可以获取某一个线程或任务执行的状态及...
python线程池 ThreadPoolExecutor 的用法及实战
从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor(线程池)和ProcessPoolExecutor(进程池)两个类。相比threading等模块,该模块通过submit返回的是一个future对象,它是一个未来可期的对象,通过它可以获悉线程的状态。主线程中可以获取某一个线程或任务执行的状态及返回值。线程池的基本使用方法包括wait、as_completed和map。其中wait方法用于等待所有任务完成,as_completed方法可以实时获取已完成任务的结果,而map方法则是将序列中的每个元素分配给线程执行,返回结果与序列顺序一致。
实战中,我们可以使用线程池进行数据爬取。以某网站为例,通过线程池进行爬取,仅需2秒钟即可完成14页的数据获取,而使用单线程方式,同样的操作需要19秒。由此可见,线程池在处理大量数据时,效率远高于单线程。2024-11-08