We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 794f85b commit 332e647Copy full SHA for 332e647
thread_signal.py
@@ -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