Joe*_*haw 8 python unix multithreading posix signals
Python线程有哪些规则以及如何处理Unix信号?
是KeyboardInterrupt
,SIGINT
由Python运行时内部触发但处理方式不同?
首先,在使用signal
模块设置信号处理程序时,必须在主线程中创建它们.如果您尝试在单独的线程中创建它们,您将收到异常.
通过该signal.signal()
函数注册的信号处理程序将始终在主线程中调用.在支持向线程发送信号的体系结构上,在C级别,我相信Python运行时会忽略线程上的所有信号,并在主线程上有一个信号处理程序,它用于调度到Python代码信号处理程序.
该thread
模块的文档声明KeyboardInterrupt
异常(通常由触发SIGINT
)可以传递给任意线程,除非您有signal
可用的模块,所有Unix系统都应该具有该模块.在这种情况下,它被传递到主线程.如果你没有系统signal
,你必须抓住KeyboardInterrupt
你的线程并调用thread.interrupt_main()
在主线程中重新提升它.
更多信息可以在Python文档的发现thread
和signal
模块.
归档时间: |
|
查看次数: |
1636 次 |
最近记录: |