,,Python的几种主动结束程序方式

,,Python的几种主动结束程序方式

本文主要介绍Python主动结束程序的几种方式。通过示例代码非常详细,对大家的学习或者工作都有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。

至于如何通过Python操作结束一个Python程序或进程,Python本身给出了几种方法,这些方法之间也有一些区别。我已经阅读并练习了相关的方法,同时也做了记录。

参考:

Python核心编程(第二版)

http://www.zhihu.com/question/21187839

1. sys.exit()

执行该语句会直接退出程序,这也是常用的方法,在不考虑平台等因素影响的情况下,一般是退出Python程序的首选方法。

该方法包含一个参数status,默认为0,表示正常退出,默认为1,表示异常退出。

导入系统

sys.exit()

sys.exit(0)

系统退出(1)

这个方法抛出一个SystemExit异常(这是唯一不能被视为错误的异常)。当这个异常没有被设置时,它将直接退出程序执行。当然,对于其他一些操作,也可以捕捉这个异常。

2. os._exit()

效果就是直接退出,不抛出异常,但是它的使用会受到平台的限制,但是我们常用的Win32平台和基于UNIX的平台不会受到影响。

知乎说调用了C语言的_exit()函数(未验证)

3. os.kill()

一般用来直接杀死进程,但只能在UNIX平台上有效。

基本原理:该函数模拟传统的UNIX函数向一个进程发送信号,其中包含两个参数:一个是进程名,即接收信号的进程;一个是要执行的操作。

常见的操作值(第二个参数)是:

SIGINT终止进程并中断进程。

Sig终止过程软件终止信号

SIG终止进程并杀死进程

信号闹钟信号

示例:

在linux平台上打开VLC视频播放器,然后查看运行进程:进程号是4497。

然后执行os.kill操作:

执行后,你可以发现VLC视频播放器已经关闭,并且进程已经被杀死。

下面是两个用os.kill()关闭程序的例子,在windows下好像还行。

#!/usr/bin/python

# -*-编码:utf-8 -*-

导入操作系统

导入系统

导入信号

定义删除(pid):

尝试:

a=os.kill(pid,信号。SIGKILL)

# a=os.kill(pid,signal.9) #相当于上面的

“打印”已终止pid为%s的进程,返回值为:% s“%(PID,a)

除了OSError,e:

‘打印’没有这样的流程!'

if __name__=='__main__ ':

杀死(8132)

Run_task_1 2 3,预计还会有更多,需要一个简单的方法干掉一个或者全部,所以下面的脚本就不要写了。

#编码=utf-8

导入系统、操作系统

def kill_crawler(id):

cmd='ps -ef | grep python '

f=os.popen(cmd)

txt=f.readlines()

对于文本中的行:

colum=line.split()

pid=列[1]

name=column[-1]

if name.startswith('run_task_ '):

task_id=name[9:-3]

如果task_id==id或id=='0 ':

cmd='kill -9 %d' % int(pid)

rc=操作系统(cmd)

如果rc==0:

打印停止“%s”成功!'% name

否则:

打印停止“%s”失败!'% name

if __name__=='__main__ ':

如果不是len(sys.argv)==2:

打印'输入要结束的任务的编号,0表示全部停止'

sys.exit()

id=sys.argv[1]

kill_crawler(id)

4. Windows下Kill进程

由于上述操作可以在Linux下进行,所以相关操作也可以在Windows下进行。

这里用的是Os.popen()。这个方法是用来直接执行系统命令的,而在Windows中,实际上是用taskkill来杀死进程。它的基本形式是,

taskkill /pid程序的PID号

您可以直接在CMD窗口下尝试此命令。

可以先打开一个计算器程序,然后用tasklist检查程序的pid。这里是620,所以对应的Python代码是:

导入操作系统

if __name__=='__main__ ':

pid=620

OS . popen(' taskkill . exe/PID:' str(PID))

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: