欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

退出python进程的最佳方法 有大用 有大大用 有大大大用

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子进程
  1. exit和quit都适用于在交互式环境下使用,他们都是内置函数,都抛出SystemExit异常

  2. os._exit 不会抛出SystemExit 异常,一旦执行,进行就退出,因此你来不及做一些清理工作

  3. 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


普通分类: