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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
详解Python中heapq模块的用法
Jun 28 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
python用match()函数爬数据方法详解
Jul 23 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
Python scrapy爬取小说代码案例详解
Jul 09 Python
python3中数组逆序输出方法
Dec 01 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 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接收POST数据,解析json数据
2013/06/28 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
Nuxt页面级缓存的实现
2020/03/09 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
有个性的自我评价范文
2013/11/15 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
2014年党建工作总结
2014/11/11 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
2015公司年度工作总结
2015/05/14 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS