该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
文章来源
挑战自我博客:http://www.tiaozhanziwo.com/archives/688.html
1、遇到的问题简述
当一个python程序所需要的运行时间很长,或者是在多线程python程序中,如果想要立即退出的话,会遇到各种各样的问题,有时候根本无法退出,除非你关闭对应的程序运行客户端。
2、解决办法
近期在完善TZ-SCAN程序时,由于程序包含了多个模块,在运行的时候根本无法停止下来,一般我在程序运行的时候想要把程序停止,狂按ctrl + c都不行,除非我直接关闭cmd控制台,今天国庆节,睡了个懒觉起来继续改一改这个程序,完美地解决了这个问题,下面把这个过程记录下来。
2.1、关于signal库的介绍
要想使用signal库,首先头部必须导入该库文件
import signal
关于signal的几个常用信号类型:
SIGINT 终止进程 中断进程,不可通过signal.signal()捕捉(相当于Ctrl+C)
SIGTERM 终止进程 软件终止信号,可通过signal.signal()捕捉(默认信号,当os.kill()没有指明信号类型时,默认的是该信号)
SIGKILL 终止进程 杀死进程,不可捕捉(相当于linux下的kill命令,windows下使用会抛出异常)
SIGALRM 闹钟信号 可以通过signal.alarm()和os.kill()发送该信号,可通过signal.signal()捕捉
SIGQUIT 退出进程 和SIGTERM类似,可通过signal.signal()捕捉
2.2、TZ-SCAN中的应用实例
简单地把TZ-SCAN中的实例抽象出来
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import signal
import os
import time
import sys
def quit(signum, frame):
print 'nYou choose to stop me!!'
sys.exit()
signal.signal(signal.SIGINT, quit)
signal.signal(signal.SIGTERM, quit)
while 1:
print 'id: ',os.getpid()
time.sleep(2)
最后
以上就是幸福犀牛最近收集整理的关于python退出整个程序_[python]如何处理python程序的主动退出问题的全部内容,更多相关python退出整个程序_[python]如何处理python程序内容请搜索靠谱客的其他文章。
发表评论 取消回复