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中提取域名的几种方法
Sep 26 Python
python多重继承实例
Oct 11 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
Apr 28 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
Python中用psycopg2模块操作PostgreSQL方法
Nov 28 Python
python TKinter获取文本框内容的方法
Oct 11 Python
django框架两个使用模板实例
Dec 11 Python
python怎么提高计算速度
Jun 11 Python
python实现数字炸弹游戏
Jul 17 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
Jan 08 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
Jan 24 Python
python标准库ElementTree处理xml
May 20 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 数组遍历顺序理解
2009/09/09 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
php文件系统处理方法小结
2016/05/23 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
Vuex 模块化使用详解
2019/07/31 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
python提示No module named images的解决方法
2014/09/29 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
python实现简单的购物程序代码实例
2020/03/03 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
外企财务年会演讲稿
2014/01/03 职场文书
奶茶店创业计划书
2014/08/14 职场文书
结对共建协议书
2014/08/20 职场文书
合理化建议书
2015/02/04 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
redis cluster支持pipeline的实现思路
2021/06/23 Redis
Python实现批量自动整理文件
2022/03/16 Python