简单的多线程:python 2.7
# -*- coding: utf-8 -*-
import threading
def run_thread():
while True:
cmd = input("input you choice: ")
print(cmd)
if cmd == 0:
print("Thread Exit")
break
else:
print("Thread Running")
t1 = threading.Thread(target=run_thread)
t1.setDaemon(True)
t1.start()
print('join')
t1.join()
print('End')
运行结果:
input you choice: join
1
1
Thread Running
input you choice: 2
2
Thread Running
input you choice: 0
0
Thread Exit
End
Process finished with exit code 0
t1.join()的作用的是阻塞等待子线程t1退出,才返回往下执行
实验1
将t1.join() 这句注释掉:
# -*- coding: utf-8 -*-
import threading
def run_thread():
while True:
cmd = input("input you choice: ")
print(cmd)
if cmd == 0:
print("Thread Exit")
break
else:
print("Thread Running")
t1 = threading.Thread(target=run_thread)
t1.setDaemon(True)
t1.start()
print('join')
#t1.join()
print('End')
运行结果:
joininput you choice:
End
Process finished with exit code 0
主线程退出的时候,子线程也一起退出了
没有机会输入数据。
实验2:
将t1.join() 这句注释掉:
将t1.setDaemon(True) 这句也注释掉:
# -*- coding: utf-8 -*-
import threading
def run_thread():
while True:
cmd = input("input you choice: ")
print(cmd)
if cmd == 0:
print("Thread Exit")
break
else:
print("Thread Running")
t1 = threading.Thread(target=run_thread)
#t1.setDaemon(True)
t1.start()
print('join')
#t1.join()
运行结果:
joininput you choice:
End
1
1
Thread Running
input you choice: 2
2
Thread Running
input you choice: 5
5
Thread Running
input you choice: 0
0
Thread Exit
Process finished with exit code 0
主线程退出,子线程还在运行,还可以输入数据