python使用标准库根据进程名如何获取进程的pid详解


Posted in Python onOctober 31, 2017

前言

标准库是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。特别是有时候需要获取进程的pid,但又无法使用第三方库的时候。下面话不多说了,来一起看看详细的介绍吧。

方法适用linux平台.

方法1

使用subprocess 的check_output函数执行pidof命令

from subprocess import check_output
def get_pid(name):
 return map(int,check_output(["pidof",name]).split())
 
In [21]: get_pid("chrome")
Out[21]:
[27698, 27678, 27665, 27649, 27540, 27530,]

方法2

使用pgrep命令,pgrep获取的结果与pidof获得的结果稍有不同.pgrep的进程id稍多几个.pgrep命令可以使适用subprocess的check_out函数执行

import subprocess<br data-filtered="filtered">def get_process_id(name):
 """Return process ids found by (partial) name or regex.
 
 >>> get_process_id('kthreadd')
 [2]
 >>> get_process_id('watchdog')
 [10, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61] # ymmv
 >>> get_process_id('non-existent process')
 []
 """
 child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)
 response = child.communicate()[0]
 return [int(pid) for pid in response.split()]

方法3

直接读取/proc目录下的文件.这个方法不需要启动一个shell,只需要读取/proc目录下的文件即可获取到进程信息.

#!/usr/bin/env python
 
import os
import sys
 
 
for dirname in os.listdir('/proc'):
 if dirname == 'curproc':
  continue
 
 try:
  with open('/proc/{}/cmdline'.format(dirname), mode='rb') as fd:
   content = fd.read().decode().split('\x00')
 except Exception:
  continue
 
 for i in sys.argv[1:]:
  if i in content[0]:
   print('{0:<12} : {1}'.format(dirname, ' '.join(content)))<br data-filtered="filtered"><br data-filtered="filtered">
phoemur ~/python $ ./pgrep.py bash
1487   : -bash 
1779   : /bin/bash

4,获取当前脚本的pid进程

import os
 
os.getpid()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python基础教程之序列详解
Aug 29 Python
九步学会Python装饰器
May 09 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
python检测是文件还是目录的方法
Jul 03 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
python操作列表的函数使用代码详解
Dec 28 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
Python实现初始化不同的变量类型为空值
Jun 02 Python
浅谈Python __init__.py的作用
Oct 28 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
Python import模块的缓存问题解决方案
Jun 02 Python
Python列表删除的三种方法代码分享
Oct 31 #Python
Python文件的读写和异常代码示例
Oct 31 #Python
Python网络编程详解
Oct 31 #Python
Python中enumerate函数代码解析
Oct 31 #Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 #Python
python中requests库session对象的妙用详解
Oct 30 #Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 #Python
You might like
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
javascript静态的url如何传递
2007/05/03 Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
javascript中常用编程知识
2013/04/08 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
python机器学习之神经网络(一)
2017/12/20 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
20行python代码实现人脸识别
2019/05/05 Python
Python bytes string相互转换过程解析
2020/03/05 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
浅谈css3中的前缀
2016/07/20 HTML / CSS
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
代码中finally中的代码会不会执行
2012/02/06 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
马云的职业生涯规划之路
2014/01/01 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
高三霸气励志标语
2014/06/24 职场文书
教师个人读书活动总结
2014/07/08 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书