欢迎各位兄弟 发布技术文章
这里的技术是共享的
python程序退出方式[sys.exit() os._exit() os.kill() os.popen(...)]
知乎说明
http://www.zhihu.com/question/21187839
1. sys.exit()
执行该语句会直接退出程序,这也是经常使用的方法,也不需要考虑平台等因素的影响,一般是退出Python程序的首选方法.
该方法中包含一个参数status,默认为0,表示正常退出,也可以为1,表示异常退出.
1 2 3 4 | 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 闹钟信号
例如:
4. Windows下Kill进程
这里使用的是os.popen(), 该方法是用于直接执行系统命令,而在Windows下其实就是使用taskkill来kill掉进程,其基本形式是,
taskkill /pid 程序的PID号码
可以直接在CMD窗口下试下这个命令....
可以先打开一个计算器程序,然后使用tasklist查看该程序的pid,这里是711
1 2 3 4 | import os if __name__ = = "__main__" : pid = 711 os.popen( 'taskkill.exe /pid:' + str (pid)) |
来自 https://www.cnblogs.com/xjh713/p/6306587.html
退出python进程,你可能听说过很多种方法,包括exit(),sys.exit(), os._exit(), quit(),这些方法都可以让进程退出,那么他们有什么区别呢。
下表是对这4种方法的对比
函数 | 适用场景 | 是否抛出SystemExit异常 |
---|---|---|
exit | 交互式环境 | 是 |
quit | 交互式环境 | 是 |
sys.exit | 主进程 | 是 |
os._exit | 子进程 | 否 |
exit和quit都适用于在交互式环境下使用,他们都是内置函数,都抛出SystemExit异常
os._exit 不会抛出SystemExit 异常,一旦执行,进行就退出,因此你来不及做一些清理工作
sys.exit 会抛出SystemExit异常,你可以捕获这个异常,做一些请求工作
sys.exit是python退出程序最常用最正式的一种做法,你必须在调用时指明退出码,退出码为0表示正常退出,其他表示非正常退出。
import sys
try:
sys.exit(3)
except SystemExit as e:
print(f'进程退出,退出码是{e.code}')
使用e.code可以获得退出码,程序可以根据退出码不同执行相应的清理工作。
来自 https://zhuanlan.zhihu.com/p/426492312