如果给定可迭代对象(列表/元组)中的项在循环给定的 x 次后未更新,是否可以终止循环?


from wmi import WMI
from os import getpid
pid = getpid()
Win32_Process = WMI().Win32_Process()
while True:
for process in Win32_Process:
if process.ProcessID == pid:
pid = process.ParentProcessId
print(process.name)

我正在尝试遍历系统上运行的进程列表,以生成子/父进程链的回溯,即:

python.exe < powershell.exe < Code.exe < Code.exe < Code.exe < explorer.exe 

我的问题是在循环一段时间后,跟踪完成或不返回任何东西&它一直在循环,基本上我不知道如何终止父while循环。

我甚至尝试比较一个回溯元组的初始长度和最终长度,这似乎有效,但限制了回溯的范围。

您写的:

while True:
for process in Win32_Process:

只要去掉while环,因为for环就足够了。


也就是说,过程的顺序很重要,所以你可能想要按.ProcessID排序

或者将它们全部放入dict并迭代。或者考虑使用各种图形包中的一种,比如https://pypi.org/project/networkx,来帮助您浏览亲子关系流程树的关系,并显示它们。

相关内容

  • 没有找到相关文章

最新更新