簡體   English   中英

如何使用python獲取進程的pid

[英]How to get the pid of process using python

我有一個任務列表文件,其中包含firefox , atom , gnome-shell

我的密碼

import psutil
with open('tasklist', 'r') as task:
    x = task.read()
    print (x)

print ([p.info for p in psutil.process_iter(attrs=['pid', 'name']) if x in p.info['name']])

想要的

[{'pid': 413, 'name': 'firefox'}]
[{'pid': 8416, 'name': 'atom'}]
[{'pid': 2322, 'name': 'gnome-shell'}]
import wmi  # pip install wmi

c = wmi.WMI()
tasklist = []

for process in c.Win32_Process():
    tasklist.append({'pid': process.ProcessId, 'name': process.Name})
print(tasklist)

對於Unix:

import psutil

tasklist = []

for proc in psutil.process_iter():
    try:
        tasklist.append({'pid': proc.name(), 'name': proc.pid})
    except:
        pass
print(tasklist)

與上面的答案類似,但是從問題來看,您似乎只對所有正在運行的任務的子集感興趣(例如,firefox,atom和gnome-shell)

您可以將感興趣的任務放入列表中。然后遍歷所有過程,僅將與列表匹配的任務附加到最終輸出中,如下所示:

import psutil

tasklist=['firefox','atom','gnome-shell']
out=[]

for proc in psutil.process_iter():
    if any(task in proc.name() for task in tasklist):
        out.append([{'pid' : proc.pid, 'name' : proc.name()}])

這將為您提供所需的列表列表輸出,其中每個列表都有一個包含pid和name鍵的字典...您可以將輸出調整為您喜歡的任何格式

您所要求的確切輸出可以通過以下方式獲得:

for o in out[:]:
    print(o)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM