我是靠谱客的博主 幸福犀牛,这篇文章主要介绍python退出整个程序_[python]如何处理python程序的主动退出问题,现在分享给大家,希望可以做个参考。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

文章来源

挑战自我博客: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程序内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部