python使用標準庫 獲取程序的pid

2021-10-10 19:20:28 字數 1910 閱讀 6178

python有一套很有用的標準庫(standard library)。標準庫會隨著python直譯器,一起安裝在你的電腦中的,所以下面這篇文章主要給大家介紹了關於python使用標準庫根據程序名如何獲取程序pid的相關資料,需要的朋友可以參考下。

前言標準庫是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

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.ar**[1:]:

if i in content[0]:

print(' : '.format(dirname, ' '.join(content)))

phoemur ~/python $ ./pgrep.py bash

1487 : -bash

1779 : /bin/bash

4,獲取當前指令碼的pid程序

import os

os.getpid()

使用 Python 標準庫進行效能測試

在 python 標準庫裡面有兩個模組可以用來做效能測試。1.乙個是 profile,它是乙個純 python 的實現,所以會慢一些,如果你需要對模組進行拓展,那麼這個模組比較合適。2.第二個是 cprofile,從名字就可以看出這是乙個 c 語言的實現版,官方推薦在大多數情況下使用。這兩者的介面和...

Python標準庫shutil模組使用方法解析

shutil.rmtee 刪除目錄及以內的所有檔案。import shutil shutil.rmtree r d python 222 包括222在內的所有檔案全部刪除。shutil.move 重新命名檔案或資料夾 impwww.cppcns.comort shutil shutil.move 源...

python標準庫 時間庫

眾所皆知,每乙個程式語言都有自己的時間類庫,python也不例外用法十分簡單 最基本的類,time類 time基本函式介紹 import time print time.asctime 如果未傳入乙個tuple或乙個time struct就是使用當前的時間,返回乙個24字長的時間字串 就這個mon ...