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实现的检测web服务器健康状况的小程序
Sep 17 Python
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
May 25 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
python ddt实现数据驱动
Mar 14 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
python 读取二进制 显示图片案例
Apr 24 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 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
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
jquery实现拖动效果
2016/08/10 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
网络编辑求职信
2014/04/30 职场文书
销售类求职信
2014/06/13 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
单位租房协议范本
2014/12/03 职场文书