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 相关文章推荐
python33 urllib2使用方法细节讲解
Dec 03 Python
线程和进程的区别及Python代码实例
Feb 04 Python
python字符串与url编码的转换实例
May 10 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
python将图片转base64,实现前端显示
Jan 09 Python
Python新手学习标准库模块命名
May 29 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
如何用python处理excel表格
Jun 09 Python
Python 如何对文件目录操作
Jul 10 Python
linux系统下pip升级报错的解决方法
Jan 31 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中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
js调用flash的效果代码
2008/04/26 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python中使用ElementTree解析XML示例
2015/06/02 Python
Python os模块学习笔记
2015/06/21 Python
python实现的系统实用log类实例
2015/06/30 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
python多线程和多进程关系详解
2020/12/14 Python
Python实现一个论文下载器的过程
2021/01/18 Python
大学生就业自荐信
2013/10/26 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
大学感恩节活动总结
2015/05/05 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL