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类继承用法实例分析
May 27 Python
Python如何为图片添加水印
Nov 25 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
python3实现基于用户的协同过滤
May 31 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
详解python播放音频的三种方法
Sep 23 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
python hashlib加密实现代码
Oct 17 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 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将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
浅析Ajax语法
2016/12/05 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
在Python中编写数据库模块的教程
2015/04/29 Python
基于python 字符编码的理解
2017/09/02 Python
Python快速排序算法实例分析
2017/11/29 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
python实现简单的学生管理系统
2021/02/22 Python
珍珠奶茶店创业计划书
2014/01/11 职场文书
2014年业务工作总结
2014/11/17 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
浅析Python中的套接字编程
2021/06/22 Python