【发布时间】:2015-08-27 03:08:12
【问题描述】:
我有一个 Python 脚本,用于监视进程及其子进程的 CPU 和内存利用率。
脚本不断检查进程或其子进程之一是否为Active。一旦进程及其所有子进程都处于Inactive 状态,Python 脚本就会退出。
所以,我在这里针对特定流程面临的问题是 -
- 进程开始
- 进程创建子进程 1
- 进程创建子进程 2
- 进程创建子进程 3(
Active最迟时刻) - 终止 sub-process-3 (此时该进程及其所有子进程均为
Inactive) - 进程创建 sub-process-4(
Active最迟时刻)
因此,如果我的脚本在 [5] 处检查进程或子进程之一是否为 Active,它将返回 false 并终止!
简而言之:进程及其所有子进程处于Inactive 状态的时间跨度很短(即子进程被杀死和新子进程尚未产生之间的时间) .如果我的脚本此时检查状态,它会返回 false,因为一切都处于非活动状态。
谁能给我任何解决方案或解决这个问题?
while(bIsProcessActive == True):
bIsProcessActive = False
if (proc.is_running() and proc.status != psutil.STATUS_ZOMBIE):
bIsProcessActive = True
cpu_usage = proc.get_cpu_percent(interval = 2)
memory_usage = proc.get_memory_info().rss
for child in proc.get_children():
if child.is_running() and child.status != psutil.STATUS_ZOMBIE:
// Add to memory and CPU usage of parent process
if bIsProcessActive == False and childutilization[0] == True:
bIsProcessActive = True
【问题讨论】:
-
看看
supervisord、systemd、upstart、runit是怎么实现的
标签: python linux algorithm subprocess psutil