001 例子1:子线程统一执行
代码说明:
声明数组存放线程实例,目的是子线程统一执行开始
threading.Thread()方法的参数说明:
第一个参数group默认为空,无实际意义,为后来版本预留位置
第二个参数target,表示当前线程执行哪个函数
第三个参数args:第二个参数里面函数的是否需要传入参数
其他不管
代码截图:
结果分析:
主函数先于子线程完成,问题原因是:主函数的主线程没有跟子线程同步
002 例子改进:主线程最后结束
解决办法,子线程启动之后,发出一个信号给主线程,即用join方法告诉主线程等待子线程的执行完毕后再完毕
改进结果:符合预期效果(主线程最后结束)
003 获得线程名称
threading.current_thread().name
代码改进
结果
004 构造线程其他方法:自定义类
之前构造线程用的是
现在使用Thread类的派生类实现多线程。自定义类好处是很多复杂逻辑自己封装到自定义类中,解耦合
(1)例子:自定义类代码如下
(2)该类说明
自己定义一个类 需要继承一个基类threading下面的Thread类,该定义的类需要完成构造函数和run函数
(1) 构造函数:
构造函数参数:需要指定执行函数 指定执行函数参数
构造函数语句:先执行基类thread的构造函数
再执行指定函数
参数赋值
(2)run函数需要定义,覆盖掉基类的run函数
(3)整体代码
结果