Python – 获取正在运行的进程列表
进程是正在执行(处理)的程序。一个进程可能不必是由用户显式运行的,它可以是操作系统产生的系统进程。任何在操作系统上执行的应用程序首先创建一个自己的进程以便执行。在典型的操作系统安装中,大多数进程是操作系统服务和后台应用程序,它们运行以维护操作系统、软件和硬件。
在本文中,我们将了解通过Python获取 Windows 操作系统正在运行的进程列表的不同方法。首先,我们将描述一个Python方法以实现结果,然后查看在 Windows 命令处理器中找到的相同命令。
方法一:
我们将使用 wmi 库来获取 Windows 操作系统上正在运行的进程列表。为了安装模块,请在操作系统的命令解释器中执行以下命令:-
pip install wmi
代码:
Python3
import wmi
# Initializing the wmi constructor
f = wmi.WMI()
# Printing the header for the later columns
print("pid Process name")
# Iterating through all the running processes
for process in f.Win32_Process():
# Displaying the P_ID and P_Name of the process
print(f"{process.ProcessId:<10} {process.Name}")
Python3
import os
# Running the aforementioned command and saving its output
output = os.popen('wmic process get description, processid').read()
# Displaying the output
print(output)
Python3
# import module
import subprocess
# traverse the software list
Data = subprocess.check_output(['wmic', 'process', 'list', 'brief'])
a = str(Data)
# try block
# arrange the string
try:
for i in range(len(a)):
print(a.split("\\r\\r\\n")[i])
except IndexError as e:
print("All Done")
输出:
3196 RuntimeBroker.exe
3524 ShellExperienceHost.exe
3548 SearchIndexer.exe
3796 SearchUI.exe
4136 IDMan.exe
4368 IEMonitor.exe
4488 notepad.exe
2616 SettingSyncHost.exe
4212 dasHost.exe
4664 AdaptiveSleepService.exe
4716 svchost.exe
5412 chrome.exe
1376 chrome.exe
1280 cmd.exe
4928 conhost.exe
5596 py.exe
5060 python.exe
1508 WmiPrvSE.exe
解释:
首先,我们初始化 wmi 库的 WMI()函数。这使我们可以使用其中的功能,例如 WMI.Win32_Service、WMI.Win32_Process、WMI.Win32_Printjob,这些功能旨在执行不同的任务。我们将使用 WMI.Win32_Process函数来获取系统上正在运行的进程列表。然后我们调用函数WMI.Win32_Process() 来获取正在运行的进程,遍历每个进程并存储在变量 process 中。然后我们使用关联的属性获得了进程的 ProcessID (pid) 和 ProcessName (name)。我们使用 F 字符串作为输出,以便在输出中添加填充以正确对齐它。方法二:
在这种方法中,我们将使用 Windows 命令处理器 (cmd.exe) 中名为 WMIC( Windows Management Instrumentation 命令行)的命令来获得所需的结果。 WMIC是一个命令行实用程序,允许用户使用命令提示符执行 Windows Management Instrumentation (WMI) 操作。为了获得正在运行的进程,我们将执行以下命令:
wmic process get description, processid
代码:
Python3
import os
# Running the aforementioned command and saving its output
output = os.popen('wmic process get description, processid').read()
# Displaying the output
print(output)
输出:
Description ProcessId
System Idle Process 0
System 4
smss.exe 340
csrss.exe 460
wininit.exe 604
csrss.exe 624
winlogon.exe 692
services.exe 736
lsass.exe 756
svchost.exe 844
svchost.exe 904
dwm.exe 1012
svchost.exe 80
svchost.exe 420
atiesrxx.exe 1076
svchost.exe 1992
svchost.exe 2032
MsMpEng.exe 2052
NisSrv.exe 2852
sihost.exe 3032
taskhostw.exe 2148
GoogleCrashHandler.exe 2712
GoogleCrashHandler64.exe 2704
explorer.exe 2892
RuntimeBroker.exe 3196
ShellExperienceHost.exe 3524
SearchIndexer.exe 3548
chrome.exe 1340
chrome.exe 2216
注意:为此目的使用 os 库不是强制性的。用户可以选择允许命令行命令执行的任何其他替代方案(Subprocess、shutil 等)。
解释:
我们使用了在 os 模块中找到的函数popen(),以便在命令处理器中执行命令。然后我们将上述命令的输出传递给 read() 以便从 os._wrap_close 对象中获取可读形式的数据。最后,我们显示了输出。
方法三:
我们将使用subprocess模块与 cmd 交互并将信息检索到您的Python ide。我们可以通过 subprocess 模块读取 cmd 命令。
让我们看看这个逻辑,如果我们在终端中运行这个wmic 进程列表简要代码,那么我们会得到这样的结果:
Approach:
- import module
- Get the output for the command “wmic process list brief ” using subprocess.check_output()
- Now get the Split the string and arrange your data with your own needs.
代码:
Python3
# import module
import subprocess
# traverse the software list
Data = subprocess.check_output(['wmic', 'process', 'list', 'brief'])
a = str(Data)
# try block
# arrange the string
try:
for i in range(len(a)):
print(a.split("\\r\\r\\n")[i])
except IndexError as e:
print("All Done")
输出:
b'HandleCount Name Priority ProcessId ThreadCount WorkingSetSize
0 System Idle Process 0 0 8 8192
5649 System 8 4 222 1835008
0 Registry 8 120 4 33910784
89 smss.exe 11 516 2 532480
815 csrss.exe 13 652 13 2019328
217 wininit.exe 13 740 1 3239936
781 services.exe 9 812 8 8294400
1843 lsass.exe 9 832 7 14864384
86 svchost.exe 8 1020 1 1351680
32 fontdrvhost.exe 8 308 5 196608
1526 svchost.exe 8 8 12 38608896
270 WUDFHost.exe 8 592 5 2097152
1479 svchost.exe 8 1056 11 16363520
541 svchost.exe 8 1104 15 4509696
279 svchost.exe 8 1260 3 2584576
146 svchost.exe 8 1284 1 6389760
214 svchost.exe 8 1300 3 3452928
327 svchost.exe 8 1308 6 5795840
345 svchost.exe 8 1332 13 10571776
395 svchost.exe 8 1452 7 5079040
261 svchost.exe 8 1460 5 5914624
161 svchost.exe 8 1472 2 4902912
390 svchost.exe 8 1580 11 9826304
348 WUDFHost.exe 13 1652 12 11526144
225 svchost.exe 8 1736 2 10473472
205 svchost.exe 8 1744 1 2093056
278 svchost.exe 8 1752 2 4444160
174 svchost.exe 8 1824 4 4063232
224 svchost.exe 8 1832 6 3821568
593 svchost.exe 8 2024 5 7610368
186 svchost.exe 8 1424 2 5058560
168 igfxCUIService.exe 8 2120 2 3579904
435 svchost.exe 8 2188 6 12341248
279 svchost.exe 8 2220 10 5017600
227 svchost.exe 8 2296 3 7024640
221 svchost.exe 8 2308 3 1908736
384 svchost.exe 8 2396 7 8499200
0 Memory Compression 8 2424 54 298409984
240 svchost.exe 8 2440 2 4845568
179 svchost.exe 8 2476 5 3567616
239 svchost.exe 8 2660 8 5775360
3352 svchost.exe 8 2684 9 6230016
225 svchost.exe 8 2816 2 4804608
487 svchost.exe 8 2872 7 9641984
473 svchost.exe 8 2912 4 13836288
142 svchost.exe 8 3032 4 2727936
633 svchost.exe 8 3048 3 16154624
555 svchost.exe 8 2072 14 12455936
267 svchost.exe 8 2936 4 7462912
465 spoolsv.exe 8 3168 7 4685824
420 svchost.exe 8 3200 10 8019968
187 svchost.exe 8 3324 6 2433024
174 svchost.exe 8 3572 2 2650112
416 svchost.exe 8 3584 5 13344768
540 svchost.exe 8 3592 10 24936448
161 IntelCpHDCPSvc.exe 8 3604 3 2052096
406 svchost.exe 8 3612 19 25100288