下面是我的测试代码。
使用 python2.7 运行时,它显示程序在所有派生线程完成之前不会收到任何信号。
在使用 python3.2 时,只有主线程的 sigintHandler 被调用。
我对 python 如何处理线程和信号感到困惑,那么如何生成一个线程并在该线程中进行信号处理?有可能吗?
from __future__ import print_function
from threading import Thread
import signal, os, sys
from time import sleep
def sigintHandler(signo, _):
print("signal %d caught"%signo)
def fn():
print("thread sleeping")
sleep(10)
print("thread awakes")
signal.signal(signal.SIGINT, sigintHandler)
ls = []
for i in range(5):
t = Thread(target=fn)
ls.append(t)
t.start()
print("All threads up, pid=%d"%os.getpid())
for i in ls:
i.join()
while True:
sleep(20)