遇到了一个关于 python 多线程与信号处理的问题,这里请教下大家

2015-11-05 21:26:50 +08:00
 xiyoulaoyuanjia
我不太明白为什么多线程中.子线程不可能设置信号处理函数,否则会报 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)
```
例如如上的程序,信号处理函数必须放到主线程里面?? 

另外这里面如果我需要在子线程里面处理信号请问应该如何处理哈?
2430 次点击
所在节点    Python
3 条回复
kohnv
2015-11-05 23:59:18 +08:00
因为信号本身就是发给整个进程而非进程中单独一个线程的
xiyoulaoyuanjia
2015-11-06 00:23:31 +08:00
@kohnv 那这个如何处理?
ryd994
2015-11-06 08:21:32 +08:00
主线程接下来,然后内部通知子线程啊,简单点就设置个变量

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/233973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX