类的特点:封装、继承、多态
创建一个MyThread类,这个类必须继承Thread类,必须有一个run方法,也可以有其他的方法,通过MyThread类创建一个对象t,因为是继承,所以t也有start方法
用t = MyThread()来代替原来的t = threading.Thread(target=函数名)来创建对象
t.start()会自动调用MyThread类的run方法
综上,线程运行有两种方式:
1、t = threading.Thread(target=函数名),函数名里的代码是什么,线程就做什么
2、当创建一个线程是用一个类创建的,这个类必须继承Thread类,必须有一个run方法,run方法里写什么,线程就执行什么。run方法执行完成,意味着线程结束。
通过类创建线程的情况适用于:
一个线程里做的事情比较复杂,而且分成了多个函数来做。一般会封装成一个类,在类里面创建一个实例对象。
实例方法肯定有一个参数self,
例如:
def run(self):
def test(self):
封装成类来创建线程,创建了几个对象,就会有几个线程,在t.start()启动后,对象会自动执行run方法,若还想执行创建的类里面的其他方法,把其他方法通过self.login() self.register() 放到run方法里面去调用
实际应用中,哪种简单用哪种,t = threading.Thread(target=函数名)更简单。