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实现的百度站长自动URL提交小工具
Jun 27 Python
Python实现LRU算法的2种方法
Jun 24 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
python数据封装json格式数据
Mar 04 Python
用python实现百度翻译的示例代码
Mar 09 Python
python版百度语音识别功能
Jul 09 Python
python动态视频下载器的实现方法
Sep 16 Python
python线程join方法原理解析
Feb 11 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
Django实现随机图形验证码的示例
Oct 15 Python
Python中的嵌套循环详情
Mar 23 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判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
PHP 正则表达式小结
2015/02/12 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
python入门基础之用户输入与模块初认识
2016/11/14 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
Python检测数据类型的方法总结
2019/05/20 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
Pandas的数据过滤实现
2021/01/15 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
行风评议整改报告
2014/11/06 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android
Python anaconda安装库命令详解
2021/10/16 Python