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字符串连接的N种方式总结
Sep 17 Python
Python如何为图片添加水印
Nov 25 Python
深入解答关于Python的11道基本面试题
Apr 01 Python
python中实现指定时间调用函数示例代码
Sep 08 Python
python语言中with as的用法使用详解
Feb 23 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
python 判断参数为Nonetype类型或空的实例
Oct 30 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 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使用qr生成二维码的示例分享
2014/01/20 PHP
php中session退出登陆问题
2014/02/27 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
javascript数组排序汇总
2015/07/07 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
Python中的闭包实例详解
2014/08/29 Python
python中urllib模块用法实例详解
2014/11/19 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
python线程join方法原理解析
2020/02/11 Python
成龙霸王洗发水广告词
2014/03/14 职场文书
博士生求职信
2014/07/06 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
初三英语教学计划
2015/01/23 职场文书
幼师辞职信范文
2015/02/27 职场文书
python glom模块的使用简介
2021/04/13 Python
JS监听Esc 键触发事键
2021/04/14 Javascript