本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。