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

参考:

Python 核心编程(第二版)

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

1. sys.exit()

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

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

1 import sys
2 sys.exit()
3 sys.exit(0)
4 sys.exit(1)

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

2. os._exit()

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

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

3. os.kill()

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

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

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

SIGINT      终止进程     中断进程

SIGTERM   终止进程     软件终止信号

SIGKILL    终止进程      杀死进程

SIGALRM   闹钟信号

例:

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

然后执行os.kill操作:

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下边是用os.kill()来关闭程序的两个例子,似乎windows 下也能用

#! /usr/bin/python

# -*- coding: utf-8 -*-

import os

import sys

import signal

def kill(pid):

try :

a = os.kill(pid, signal.SIGKILL)

# a = os.kill(pid, signal.9) # 与上等效

print '已杀死pid为%s的进程, 返回值是:%s' % (pid, a)

except OSError, e:

print '没有如此进程!!!'

if __name__ = = '__main__' :

kill( 8132 )

~~~~~~~~~~~~~~~~~~~~~~~~

run_task_1 2 3,预计会更多,需要一个简单的办法kill掉某一个,或是这是全部kill掉,于是别写了下面的这个脚本

[python]  view plain  copy

  1. #coding=utf-8

  2. import sys,os

  3. def kill_crawler(id):

  4. cmd = ‘ps -ef | grep python’

  5. f = os.popen(cmd)

  6. txt = f.readlines()

  7. for line in txt:

  8. colum = line.split()

  9. pid = colum[1]

  10. name = colum[-1]

  11. if name.startswith(‘run_task_’):

  12. task_id = name[9:-3]

  13. if task_id == id or id ==‘0’:

  14. cmd = “kill -9 %d” % int(pid)

  15. rc = os.system(cmd)

  16. if rc == 0 :

  17. print “stop \”%s\" success!!" % name

  18. else:

  19. print “stop \”%s\" failed!!" % name

  20. if __name__ ==’__main__’:

  21. if not  len(sys.argv)==2:

  22. print u’输入要结束的任务编号,0代表停止所有’

  23. sys.exit()

  24. id = sys.argv[1]

  25. kill_crawler(id)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4. Windows下Kill进程

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

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

taskkill   /pid   程序的PID号码

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

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

1 import os
2 if __name__ == “__main__”:
3 pid = 620
4 os.popen(‘taskkill.exe /pid:’+str(pid))

ok,

---------------------
作者:hellocsz
来源:CSDN
原文:https://blog.csdn.net/hellocsz/article/details/79940647
版权声明:本文为作者原创文章,转载请附上博文链接!

Python程序的几种退出方式相关推荐

  1. python的两种退出方式

    os._exit() vs sys.exit() 转自: http://www.cnblogs.com/gaott/archive/2013/04/12/3016355.html 概述 python的 ...

  2. 执行 Python 程序的三种方式及Python 的 IDE —— `PyCharm`

    执行 Python 程序的三种方式 3.1. 解释器 python / python3 Python 的解释器 # 使用 python 2.x 解释器 $ python xxx.py# 使用 pyth ...

  3. 运行python程序的两种方式交互式和文件式_Python基础知识2

    运行Python程序的两种方式 小白学习,如有错误欢迎指点 一.每位小白写的第一个Python程序 1.运行Python程序的两种方式 1.1 交互式模式(即时对话) 打开cmd,打开Python解释 ...

  4. 运行python程序的两种方式交互式和文件式_教你如何编写、保存与运行 Python 程序...

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  5. 周一02.3运行python程序的两种方式

    一.运行python程序的两种方式 方法一:交互式:                      优点:输入一行代码立刻返回结果                       缺点:无法永久保存代码 方法 ...

  6. 运行Python程序的2种方式

    运行Python程序有2种方式: 使用交互式的带提示符的解释器 传统的使用源文件的方式 1.第一种方式 打开解释器 输入代码按回车,即可运行 2.第二种方式 新建一个python文件(我在D盘下新建了 ...

  7. python有两个运行程序分别是什么_运行python程序的两种方式

    [单选题]I wonder why ________ are so interested in action movies. [单选题]项目经理的职责不包括以下哪项内容 ? [简答题]结合项目的特点和 ...

  8. python打开方式包括_运行Python程序有两种方式:________和________。

    运行Python程序有两种方式:________和________. 答: 交互式 文件式 自觉的人,心目中有一张蓝图,人生理想.但是不知道世界的游戏规则 答:× 山水画的鉴赏方法? 答:1.首先看风 ...

  9. 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式

    交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...

最新文章

  1. 使用Spring容器
  2. zabbix企业应用之固定端口监控redis
  3. python为什么那么难学_Python入门很难吗? 为什么越来越多的人都学Python?
  4. python基础教程书籍推荐-python入门书籍推荐
  5. 2014025650《嵌入式程序设计》第一周学习总结
  6. 实体词典 情感词典_基于词典的情感分析——简单实例
  7. 今日恐慌与贪婪指数为83 贪婪程度大幅上升
  8. Mybatis源码分析(一) | 如何调试Mybatis源码
  9. 经济学金融学书籍推荐
  10. 数字孪生交通仿真(一)
  11. 黑色曼陀罗的宿命,无尽的结束,留下伤痛与悲残
  12. InfoPath,你不需要吗?
  13. 【转】FAL_CLIENT和FAL_SERVER参数详解
  14. 我用了九个小时给高中同学写了一款留言板
  15. 基于微信小程序的酒店预定管理系统 报告+PPT+项目前后台源码及数据库文件
  16. P110 课时111.多线程更新UI数据
  17. 爬虫概念与编程学习之如何爬取网页源代码(一)
  18. MCGS作为Modbus TCP服务器
  19. windows用alist部署webdav服务挂载阿里云盘,再用rclone将阿里云盘挂载到电脑本地
  20. android 获取通讯录全选反选_Android Recyclerview实现多选,单选,全选,反选,批量删除的功能...

热门文章

  1. 天纵智能软件快速开发平台文件管理插件二
  2. Windows CE的电源管理
  3. JDK8之Optional类
  4. Java 常用类Date
  5. 高新技术企业申报需要注意的问题
  6. sklearn中的数据预处理方法学习汇总
  7. Java 类变量和类方法
  8. mongodump和mongorestore实战
  9. c语言汇率转换代码_C语言兑换压岁钱
  10. 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——③整理、验证数据,建立Dataset对象