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通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
Python字符串中添加、插入特定字符的方法
Sep 10 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
通过代码实例了解Python sys模块
Sep 14 Python
python中pivot()函数基础知识点
Jan 03 Python
基于Python实现nc批量转tif格式
Aug 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
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python素数检测的方法
2015/05/11 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
语文教育专业应届生求职信
2013/11/23 职场文书
新学期班主任寄语
2014/01/18 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
颁奖典礼主持词
2014/03/25 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android