如果写的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()
?
时间: 2024-11-02 13:55:43