Skip to content

Commit 332e647

Browse files
authored
多线程响应sigint信息退出
1 parent 794f85b commit 332e647

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

thread_signal.py

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import threading
2+
from time import sleep
3+
import signal
4+
5+
class producer(threading.Thread):
6+
def __init__(self, event):
7+
threading.Thread.__init__(self)
8+
self.event = event
9+
10+
def run(self):
11+
while self.event.is_set():
12+
print "sub thread"
13+
sleep(2)
14+
else:
15+
print("sub thread end")
16+
exit()
17+
18+
def handler_thread(event):
19+
print("main thread end")
20+
event.clear()
21+
22+
def handler(signum, frame):
23+
handler_thread(frame.f_globals['event'])
24+
25+
signal.signal(signal.SIGINT, handler)
26+
27+
print "main thread"
28+
event = threading.Event()
29+
event.set()
30+
p = producer(event)
31+
p.start()
32+
p.join()
33+
34+
sleep(100) # 一定要使主线程处于活动状态,否则信号处理对子线程不起作用

0 commit comments

Comments
 (0)