Python的信号处理与程序退出
一、多进程程序的退出
需要先将子进程逐个杀掉后再退出主进程,不然会导致主进程退出(CTRL+C)后子进程不退出而继续运行。?
二、多线程程序的退出
需要在启动多线程时将线程的"Daemon"属性设置为"True"(默认为"False"),否则程序会死锁而无法退出(CTRL+C);
下面是示例代码:
import signal
import threading
def sig_handler(sig, frame):
try:
th_timeout.stop()
th_timeout.join()
except Exception, ex:
exit(0)
?
def main():
...
##set signal handler
signal.signal(signal.SIGTERM, sig_handler)
signal.signal(signal.SIGINT, sig_handler)
global th_timeout
th_timeout = threading.Thread(target=your_application, args=())
th_timeout.setDaemon(‘True‘)
th_timeout.start()
if __name__ == "__main__":
main()
?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。