参考博客:
https://www.cnblogs.com/aylin/p/5601969.html
https://www.cnblogs.com/melonjiang/p/5307705.html
1、直接调用:
import threading
import time
'''直接调用'''
def hello(name):
print("Hello %s"%name)
time.sleep(3)
if __name__ == "__main__":
t1=threading.Thread(target=hello,args=("zhangsan",)) #生成线程实例
t2=threading.Thread(target=hello,args=("lisi",))
t1.setName("aaa") #设置线程名
t1.start() #启动线程
t2.start()
t2.join() #join 等待t2先执行完
print("Hello")
print(t1.getName()) #获取线程名
结果:
Hello zhangsan
Hello lisi
(等待3秒后t2执行完,注意由于是t2.join(),而t1没有.join(),所以不是等t1)
Hello
aaa
2、继承式调用:
'''继承式调用'''
import threading
import time
class MyThread(threading.Thread):
def __init__(self,name):
threading.Thread.__init__(self)
self.name = name
def run(self):
print("Hello %s"%self.name)
time.sleep(3)
if __name__ == "__main__":
t1=MyThread("zhangsan")
t2=MyThread("lisi")
t1.start()
t2.start()
结果:
Hello zhangsan
Hello lisi
(主线程先结束,等待3秒后程序真正结束)
注意:可以看到类 MyThread继承自threading.thread,并重写的是其run方法,而在多线程调用的时候调用的是start方法。