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 ...