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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值