一.线程池代码解释
1.初始化函数__init__():
- self.task: 一个不限长度的队列,用于放待处理的任务,一端存放,另一端由线程取任务执行,初始为空
- self.max_num: 线程的最大数量,默认为5
- self.generate_list: 创建的线程存放在该列表中,初始为空,数量应小于self.max_num
- self.free_list: 空闲的线程存放在该列表中,初始为空
- self.isterminal: 一个标志位,表示进程是否终止,默认False:不终止;True:终止,不理解可以暂时先放一放。
2.线程池启动函数run():
传入参数:
- 待处理任务的函数名称
- 传入参数(元组形式)
- 回调函数的函数名(回调函数的作用:执行完待处理任务后,将其返回值传给回调函数作相应处理,反映任务的执行情况)
执行逻辑:
- 将任务put到待处理任务队列self.task中
- 若当前无空闲线程,且已创建的线程数未达到最大值,则执行generate_thread()函数,创建新线程,否则不作任何操作,等待空闲线程去队列中取该任务执行
3.创建线程函数generate_thread():
- 创建一个线程,将self.call()函数作为目标函数,则每一个self.call()都是一个独立的线程
4.处理任务函数call():
- 将当前线程加入self.generate_list中
- 取任务:从待处理任务队列中get任务
- 只要取出的任务不是【任务完成符StopTask】,则处理任务并执行回调函数,否则销毁该线程<