- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个小的 python 脚本,基本上如下所示:
import os
import psutil
def processtree():
pid = os.getpid()
# have to go two levels up to skip calling shell and
# get to actual parent process
parent = psutil.Process(pid).parent().parent()
print 'Parent %s [PID = %d]' % (parent.name(), parent.pid)
print ' |'
for child in parent.children(recursive=True):
if child.pid != pid:
print ' - Child %s [PID = %d]' % (child.name(), child.pid)
else:
print ' - Child %s [PID = %d] (Self)' % (child.name(), child.pid)
if '__name__' == '__main__':
processtree()
当我在 Windows 上的 bash
中运行此脚本时,没有任何其他运行,我看到以下内容:
Parent bash.exe [PID = 5984]
|
- Child bash.exe [PID = 5008]
|
- Child python.exe [PID = 3736] (Self)
此信息正确。父 bash 进程是 PID 5984,python 进程是 3736。现在,我运行 sleep 10000 &
以便它作为 PID 5984 的子进程运行。我检查 ps -aef | grep 5984
它在那里;:
$ ps -aef | grep 5984 | grep -v grep | grep -v ps
myuser 5984 1 con May 12 /bin/bash
myuser 5080 5984 con 11:17:12 /bin/sleep
myuser 3948 5984 con 11:36:47 /bin/bash
但是,当我再次运行我的脚本时,它仍然显示:
Parent bash.exe [PID = 5984]
|
- Child bash.exe [PID = 7560]
|
- Child python.exe [PID = 5168] (Self)
它不会将 sleep
显示为父 bash 进程的子进程,即使 ps
将其显示为存在。
请注意,自创建新的调用 shell 以来,bash.exe 子进程的 PID 已更改(不确定为什么会发生这种情况,但我认为这不相关)。 python解释器的PID因为我又调用了脚本python processtree.py
.
不确定我做错了什么,我已经盯着这个看了一段时间了。感谢任何帮助...
最佳答案
从评论中发帖,这样其他人就不会将其视为未回答的开放性问题
您需要改为使用 parent = psutil.Process(pid).parent()
。
在 Unix 中,fork
和 exec
的组合导致第二个 bash 进程被 sleep 取代。
Windows 基于创建进程的生成模型,这是从 DEC VMS 继承下来的遗产。 (Dave Cutler 管理了 VMS 和 NT 的设计。许多前 DEC 工程师在 1988 年跟随他到 Microsoft。)NT 内核实际上可以实现 fork
和 exec
,它为 SUA subsystem 所做的.
关于Python psutil 不显示所有子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220732/
我试图用 python psutil 做一些事情但是得到了一个奇怪的错误。 procs = psutil.get_process_list() 出现以下错误: AttributeError: 'mod
我正在尝试使用 psutil 终止进程 (zoom.exe)。但是,我收到错误 psutil.AccessDenied。我拥有执行此操作的所有权限,并且已经在另一台电脑上进行了测试。 代码 def k
我正在尝试为我的 Linux 服务器编写一个小的异常警报应用程序,我发现 psutil 是一个非常方便的库。 不过,我不是很清楚psutil.cpu_percent(interval=1)和psuti
我开始使用 pyspark 学习 Spark,想知道以下日志消息的含义是什么? UserWarning: Please install psutil to have better support wi
我在我的 Snakemake 工作流程中包含了一些规则的 benchmark 指令,生成的文件具有以下 header : s h:m:s max_rss max_vms max_uss max
我正在尝试在 centos 中安装 psutil 并且同样因 gcc 错误而失败。我在这个论坛上提到了各种帖子,但没有一个有帮助。许多线程建议使用 pydev 但它已经存在于我的系统中 #sudo /
有人能帮我理解为什么我不能安装 psutil 吗?我在 MacOS 上。我是一个菜鸟,所以请耐心等待,但任何帮助将不胜感激。这可能与我安装的默认 Python 安装 vs v3 有关吗?我是命令行的新
我正在尝试运行这段代码,但我没有按名称获取进程列表: import psutil PROCNAME = "python.exe" for proc in psutil.process_iter():
我正在尝试安装 lib psutil,使用命令 !pip install psutil。当我运行这段代码时,我得到了这个 Requirement already satisfied: psutil i
也许我忽略了一些东西,但我无法弄清楚如何在不遍历所有进程的情况下一次获取所有进程的 current_process.cpu_percent(interval=0.1)。当前迭代需要 process_c
我正在为 Linux 编写一个 Python 脚本,该脚本应该在满足给定条件时暂停进程,然后再恢复它。为此,我使用 psutil (http://code.google.com/p/psutil)。我
我正在尝试查找所有可用的端口来连接计算机。我正在使用下面的代码 import psutil for proc in psutil.process_iter(): print (proc)
我有一个小的 python 脚本,基本上如下所示: import os import psutil def processtree(): pid = os.getpid() # hav
我正在尝试测量进程树的 CPU 使用率。 目前获取一个进程(没有子进程)的 cpu_usage 就可以了,但是我得到了奇怪的结果。 import psutil p = psutil.Process(P
当运行 psutil.virtual_memory() 时,我得到这样的输出: >>psutil.virtual_memory() vmem(total=8374149120L, av
Glances v2.11.1 with psutil v5.4.3 /usr/lib/python3.6/site-packages/psutil/_pslinux.py:1152: Runtime
我正在编写一些代码,根据进程的名称和所有者来终止进程。这在 Windows XP 上运行良好,但当我在 Windows 7 上运行相同的代码时,在尝试获取进程的用户名时出现“访问被拒绝”错误。 是否有
我的目标只是列出占用内存最多的 5 个进程,以及它们“使用”了多少内存。我已通读文档,似乎 process.memory_info().rss 就是我想要的,但是这个数字明显小于 Windows 任务
get_cpu_percent()函数具体如何使用? 我的代码是: SDKTestSuite.DijSDK_CalculateFps(int(timeForFPS),int(index),camera
我在 python 解释器中执行以下两个语句。 >>> psutil.cpu_percent(interval=None, percpu=False) 2.0 >>> psutil.cpu_perce
我是一名优秀的程序员,十分优秀!