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 MD5文件生成码
Jan 12 Python
Pyramid添加Middleware的方法实例
Nov 27 Python
Python制作CSDN免积分下载器
Mar 10 Python
python中pass语句用法实例分析
Apr 30 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
Python3实现购物车功能
Apr 18 Python
Python基础学习之函数方法实例详解
Jun 18 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
python redis存入字典序列化存储教程
Jul 16 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
js的event详解。
2006/09/06 Javascript
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
解决vue-router中的query动态传参问题
2018/03/20 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
深入理解Python中变量赋值的问题
2017/01/12 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
python实现批量转换图片为黑白
2020/06/16 Python
Python截图并保存的具体实例
2021/01/14 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
财务部岗位职责
2013/11/19 职场文书
中专生的个人自我评价
2013/12/11 职场文书
部队个人年终总结
2015/03/02 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
人与自然观后感
2015/06/16 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
高中班主任寄语
2019/06/21 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android