我不太明白为什么多线程中.子线程不可能设置信号处理函数,否则会报 ValueError 。
例如
def test3():
try:
signal.alarm(60)
proc = subprocess.Popen("sleep 100", shell=True)
stdoutdata, stderrdata = proc.communicate()
signal.alarm(0) # reset the alarm
except Alarm:
print("上传文件时间超时:\n ")
if __name__ == '__main__':
signal.signal(signal.SIGALRM, alarm_handler)
sched = Scheduler()
sched.start()
sched.add_interval_job(test3, minutes = 3)
例如如上的程序,信号处理函数必须放到主线程里面??
另外这里面如果我需要在子线程里面处理信号请问应该如何处理哈?
1
kohnv 2015-11-05 23:59:18 +08:00
因为信号本身就是发给整个进程而非进程中单独一个线程的
|
2
xiyoulaoyuanjia OP @kohnv 那这个如何处理?
|
3
ryd994 2015-11-06 08:21:32 +08:00
主线程接下来,然后内部通知子线程啊,简单点就设置个变量
|