2015-08-30 50 views

回答

2

如果你想看到正在運行的進程,你可以使用os模塊來執行ps unix命令

import os 
os.system("ps") 

這將列出的進程。

但是如果你想通過ID獲取進程名稱,你可以嘗試ps -o cmd= <pid> 所以Python代碼將

import os 
def get_pname(id): 
    return os.system("ps -o cmd= {}".format(id)) 
print(get_pname(1)) 

更好的方法是使用subprocess和管道。

import subprocess 
def get_pname(id): 
    p = subprocess.Popen(["ps -o cmd= {}".format(id)], stdout=subprocess.PIPE, shell=True) 
    return str(p.communicate()[0]) 
name = get_pname(1) 
print(name) 
+0

@Mahsa只是在一個循環中使用該函數,即對於pid列表,只需遍歷該列表並使用函數 – nishparadox

4

psutil包使這非常容易。

import psutil 

process = psutil.Process(pid) 

process_name = process.name() 
+1

這是更好的模塊。我試圖記住這被稱爲。它不是procfs。 – Paul

+0

我收到一個錯誤: 'TypeError:'str'對象不可調用' – Mahsa

+0

@Mahsa,您使用的是舊版本的'psutil'。您通常應該升級,但現在只需使用'process.name'作爲字符串而不是調用它。 – Cyphase

相關問題