Python程序退出方式小结


Posted in Python onDecember 09, 2017

对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下。

参考:

Python 核心编程 (第二版) 中文高清

1. sys.exit()

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

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

import sys
sys.exit()
sys.exit(0)
sys.exit(1)

该方法引发的是一个SystemExit异常(这是唯一一个不会被认为是错误的异常),当没有设置捕获这个异常将会直接退出程序执行,当然也可以捕获这个异常进行一些其他操作。

2. os._exit()

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

知乎上有说是调用了C 语言的 _exit() 函数(未考证)

3. os.kill()

一般用于直接Kill掉进程,但是只能在UNIX平台上有效。

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

操作(第二个参数)的常用取值为:

SIGINT 终止进程 中断进程

SIGTERM 终止进程 软件终止信号

SIGKILL 终止进程 杀死进程

SIGALRM 闹钟信号

例:

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

Python程序退出方式小结

然后执行os.kill操作:

Python程序退出方式小结

执行完之后可以发现VLC视频播放器已经关闭,同时该进程也已经被Kill了。

4.Windows下Kill进程

既然在Linux下能够进行上述操作,那么Windows下也能够有相关的操作。

这里使用的是os.popen(),该方法是用于直接执行系统命令,而在Windows下其实就是使用taskkill来kill掉进程,其基本形式是,

taskkill/pid程序的PID号码

可以直接在CMD窗口下试下这个命令....

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

mport os
if __name__ == "__main__":
pid = 620
os.popen('taskkill.exe /pid:'+str(pid))

总结

以上就是本文关于Python程序退出方式小结的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
编写自定义的Django模板加载器的简单示例
Jul 21 Python
浅谈Python中的私有变量
Feb 28 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
python pexpect ssh 远程登录服务器的方法
Feb 14 Python
浅谈python 中类属性共享的问题
Jul 02 Python
Python简易版停车管理系统
Aug 12 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
python mysql中in参数化说明
Jun 05 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
重构Python代码的六个实例
Nov 25 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 #Python
Python爬取附近餐馆信息代码示例
Dec 09 #Python
Python的地形三维可视化Matplotlib和gdal使用实例
Dec 09 #Python
python登录并爬取淘宝信息代码示例
Dec 09 #Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 #Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 #Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 #Python
You might like
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
Python给图像添加噪声具体操作
2019/03/03 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
vue常用指令代码实例总结
2020/03/16 Python
Python super()方法原理详解
2020/03/31 Python
python2和python3哪个使用率高
2020/06/23 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
RIP版本1跟版本2的区别
2013/12/30 面试题
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
php png失真的原因及解决办法
2021/11/17 PHP
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python