Python多线程
import threading
import time
def loop():
print('我是线程1,我运行了,现在会延迟2秒,看线程2会不会在我结束之前运行', time.strftime('%H:%M:%S', time.localtime()))
time.sleep(2)
print('我是线程1,我运行结束了', time.strftime('%H:%M:%S', time.localtime()))
def loop1():
print('我是线程2, 我运行了', time.strftime('%H:%M:%S', time.localtime()))
time.sleep(1)
print('我是线程2, 我结束了', time.strftime('%H:%M:%S', time.localtime()))
if __name__ == '__main__':
t1 = threading.Thread(target=loop)
t2 = threading.Thread(target=loop1)
t1.start()
t2.start()
print('我是主线程, 我结束了', time.strftime('%H:%M:%S', time.localtime()))
运行结果如下图
运行结果在线程1结束之前主线程就先结束了,这里如果我们想要在线程结束之后再运行下面的代码只要增加一句就可以搞定
import threading
import time
def loop():
print('我是线程1,我运行了,现在会延迟2秒,看线程2会不会在我结束之前运行', time.strftime('%H:%M:%S', time.localtime()))
time.sleep(2)
print('我是线程1,我运行结束了', time.strftime('%H:%M:%S', time.localtime()))
def loop1():
print('我是线程2, 我运行了', time.strftime('%H:%M:%S', time.localtime()))
time.sleep(1)
print('我是线程2, 我结束了', time.strftime('%H:%M:%S', time.localtime()))
if __name__ == '__main__':
t1 = threading.Thread(target=loop)
t2 = threading.Thread(target=loop1)
thread1.append(t1)
thread1.append(t2)
t1.start()
t2.start()
t1.join() # 本线程结束后才会继续运行下面的代码
print('我是主线程, 我结束了', time.strftime('%H:%M:%S', time.localtime()))
运行结果如下图
我们利用t1.join()把代码堵住,只要t1线程没有运行结束,就不会继续往下面运行