python 多线程 exit()函数 错误示范
以下程序,第一个线程 正常运行,第二个线程的 init的时候,调用exit()函数。
这样 主线程退出了。
ctrl c什么的都不管用了。
只是 修改 第一个线程为一个孤儿 线程。等这个线程退出
主线程是在 var.start() 这句话之前 ,就退出了,之后的语句 都不执行的了
程序代码:
#!/usr/bin/python
#-*- coding:utf-8 -*-
import sys
import threading
import time
class TaskThread(threading.Thread):
def __init__(self, cnt):
threading.Thread.__init__(self)
self.cnt = cnt
if cnt < 5:
exit(0)
self.running = True
def run(self):
while self.running:
time.sleep(1)
print("cnt = %d\n" % self.cnt)
self.cnt = self.cnt - 1
if self.cnt <= 0:
break
print('task thread exit!\n')
if __name__ == "__main__":
task = TaskThread(20)
task.start()
main_alive = True
print('Main Process Runing\n')
var = TaskThread(3)
var.start()
print('var going \n')
try:
while main_alive:
time.sleep(1)
print('#\n')
except KeyboardInterrupt:
print('Ctrl C To Exit\n')
task.running = False
print('Main Process Exit\n')
log:
C:\Python27\python.exe E:/python/work/thread_t1/thread_exit.py
Main Process Runing
cnt = 20
cnt = 19
cnt = 18
cnt = 17
cnt = 16
cnt = 15
cnt = 14
cnt = 13
cnt = 12
cnt = 11
cnt = 10
cnt = 9
cnt = 8
cnt = 7
cnt = 6
cnt = 5
cnt = 4
cnt = 3
cnt = 2
cnt = 1
task thread exit!
Process finished with exit code 0
(稍后补充)