python线程池与进程池基础学习(python 线程池)
一.基础介绍
当我们需要执行的任务较多时,例如爬取多页数据,需要创建多个线程或者进程来提高效率,而一个一个创建线/进程就比较麻烦,这时我们就可以使用线程池/进程池。
线程池的作用就是开辟一些线程,我们直接给线程池提交任务,线程任务的调度交给线程池来完成。
线程池的基类是concurrent.futures模块中的Executor,Executor提供了两个子类,即ThreadPoolExecutor和ProcessPoolExecutor,其中ThreadPoolExecutor用于创建线程池,而ProcessPoolExecutor用于创建进程池。
使用线程池来执行线程任务的步骤如下:
1. 调用 ThreadPoolExecutor 类的构造器创建一个线程池。
2. 定义一个普通函数作为线程任务。
3. 调用 ThreadPoolExecutor 对象的 submit() 方法来提交线程任务。
4. 当不想提交任何任务时,调用 ThreadPoolExecutor 对象的 shutdown() 方法来关闭线程池。
二.python实例学习
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
def son(para):
for i in range(500):
print(para,i)
if __name__ == '__main__':
with ThreadPoolExecutor(66) as tpool:
for i in range(100):
tpool.submit(son,para = f'线程{i}')
print("线程池任务执行完毕")
with ThreadPoolExecutor(66) as tpool表示创建线程池,然后submit(func, *args)表示将任务函数func(son)交给线程池,*args为任务函数的参数。运行结果(部分截取)如下:
此外,当线程池将任务执行完毕才能进行下一步,即: