Python的信号处理与程序退出
来源:互联网 发布:淘宝商家的宝贝删不掉 编辑:程序博客网 时间:2024/05/03 09:15
如果写的Python程序是多线程或多进程的,就涉及到程序安全退出的问题。
否则程序会死锁而无法退出(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()
一、多进程程序的退出
需要先将子进程逐个杀掉后再退出主进程,不然会导致主进程退出(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()
0 0
- Python的信号处理与程序退出
- Python的信号处理与程序退出
- Linux程序退出时的信号捕获及处理
- python多线程下的信号处理程序示例
- SIGUSR1信号程序退出
- Android程序退出的处理
- 子进程中调用system命令执行openssl后,程序退出了,原因是SIGCHLD信号的处理
- Linux下信号处理与多线程程序
- Linux下信号处理与多线程程序
- SIGPIPE信号引起程序退出
- 返回键的处理,以及退出程序
- //捕捉段错误信号的信号处理程序
- php脚本关于退出信号的处理 (注册信号函数) 实例
- python 退出程序sys.exit 的退出码
- Linux 程序信号处理
- Python 自定义信号处理
- Python信号处理
- Linux信号与信号处理
- MFC文档视图框架之间的访问关系
- phonegap/cordova4.0更新解读
- apktool的使用简述
- Graham_Scan解决凸包问题
- Vmware view 交叉编译之依赖库文件curl
- Python的信号处理与程序退出
- 大型机器学习
- 了解External Accessory Framework之EAAccessory
- 人脸识别必读的N篇文章
- 常用工具类
- c++指针和引用的区别
- deep learning 从自我学习到深层网络学习
- 各种意外汇总
- OpenCV读取图片数量有上限