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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
使用Python实现在Windows下安装Django
Oct 17 Python
Python 多维List创建的问题小结
Jan 18 Python
ipad上运行python的方法步骤
Oct 12 Python
pycharm无法导入本地模块的解决方式
Feb 12 Python
Python3 中sorted() 函数的用法
Mar 24 Python
python实现飞船游戏的纵向移动
Apr 24 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 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
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
Python基于DES算法加密解密实例
2015/06/03 Python
django站点管理详解
2017/12/12 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
Linux下多个Python版本安装教程
2018/08/15 Python
利用python修改json文件的value方法
2018/12/31 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
中英双版中文教师求职信
2013/10/27 职场文书
项目管理计划书
2014/01/09 职场文书
德语专业求职信
2014/03/12 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
情感电台广播稿
2015/08/18 职场文书
篮球拉拉队口号
2015/12/25 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
四年级作文之植物
2019/09/20 职场文书