例子1
#!/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
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
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为:
E:\python\work\thread_t1>python thread_test1.py
cnt = 20
#
cnt = 19
#
cnt = 18
#
cnt = 17
#
cnt = 16
#
Ctrl C To Exit
Main Process Exit
cnt = 15
task thread exit!
例子2
#!/usr/bin/python
#-*- coding:utf-8 -*-
import sys
import threading
import time
import signal
gl_running = True
class TaskThread(threading.Thread):
def __init__(self, cnt):
threading.Thread.__init__(self)
self.cnt = cnt
self.running = True
def run(self):
global gl_running
while gl_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')
def handle_exit(signum, frame):
global gl_running
gl_running = False
print('catched interrupt signal!\n')
if __name__ == "__main__":
task = TaskThread(20)
task.start()
signal.signal(signal.SIGINT, handle_exit)
signal.signal(signal.SIGTERM, handle_exit)
while gl_running:
time.sleep(1)
print('Main Process Exit\n')
log为:
E:\python\work\thread_t1>python thread_test1.py
cnt = 20
cnt = 19
cnt = 18
cnt = 17
catched interrupt signal!
Main Process Exit
cnt = 16
task thread exit!