下面是我的测试代码。
当使用python2.7运行时,它显示程序在所有派生线程完成之前不会收到任何信号。
使用python3.2时,只有主线程的sigintHandler被调用。
我对python如何处理线程和信号感到困惑,所以我该如何生成一个线程并在该线程中进行信号处理?它有可能吗?如何在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)
如果您在范围(10):sleep(1)'中用'替换'sleep(10)',我是否有区别? – shx2
刚刚试过,但没有区别@ shx2 – adamsmith