gpt4 book ai didi

linux - Python-重新循环文件以获取更新的信息

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:58 24 4
gpt4 key购买 nike

我正在用 Python 编写一个程序,该程序从“/proc/PID/status”文件中获取子进程的峰值内存使用情况。我可以成功获取信息,但它只是进程开始时的初始内存使用情况,而不是峰值内存使用情况。这是我的代码:

def worker(self):
cmd = ["/home/orlando/CountMem","400000000","2000"]
p = subprocess.Popen(cmd,stdout=subprocess.PIPE)
id_list = []
id_list.append(p.pid)

for num in id_list:
stat_file = open("/proc/{0}/status".format(num))
for i, line in enumerate(stat_file):
if i == 3:
print line
if i == 10:
print line
return id_list

if __name__ == '__main__':
count = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes = count)
print(pool.map(worker,['ls']*count))

这是我从这段代码中得到的输出:

Pid:    7839
Pid: 7838


VmPeak: 12 kB

VmPeak: 12 kB

Pid: 7841

VmPeak: 2400 kB

Pid: 7840

VmPeak: 2400 kB

Pid: 7843

VmPeak: 12 kB

Pid: 7842

VmPeak: 12 kB

Pid: 7844

VmPeak: 12 kB

Pid: 7845

VmPeak: 2400 kB

希望让这一点更清楚,我想多次读取“/proc/PID/status”文件,直到进程结束,以便我可以获得峰值内存使用情况,而不是初始内存使用情况。任何见解将不胜感激,谢谢。

最佳答案

在 for 循环检查 pid 的周围放置一个 while 循环。每次循环后,检查每个进程是否仍在运行。如果没有,请将其从 id_list() 中删除。所以条件是 while (len(id_list) > 0):

关于linux - Python-重新循环文件以获取更新的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17797005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com