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调用浏览器并打开一个网址的例子
Jun 05 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
python处理两种分隔符的数据集方法
Dec 12 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
Python如何获取文件指定行的内容
May 27 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Python 转换文本编码实现解析
2019/08/27 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
独生子女证明范本
2015/06/19 职场文书
运动会100米加油稿
2015/07/21 职场文书
化工生产实习心得体会
2016/01/22 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS