“ psutil.Process(PARENT_PID).cpu_percent(interval = 0)”在多处理子过程中仅返回“ 0.0”

问题描述 投票:0回答:1

我有一项耗费资源的任务,我想监视该进程的CPU使用率。我需要cpu百分比以高且constant的速率刷新,这意味着仅在[[inside的各个点添加print(psutil.cpu_percent(interval=0))就可以了。我尝试添加一个带有定时循环的并行进程,该进程可测量主进程的资源使用情况并进行打印。我试图将主进程的PID传递给子进程,并使用它来获取主进程的用法,但似乎不起作用。这是我想出的:

system_monitor(process_pid): while True: # Timer (waits for the right time to start the loop) [...] # Print CPU usage print(psutil.Process(process_pid).cpu_percent(interval=0)) main(): process_pid = os.getpid() parallel_process = Process(target=system_monitor, args=(process_pid,)) # Set as daemon so it stops when main process stops parallel_process.daemon = True parallel_process.start() # Resource demanding task [...] if __name__ == "__main__": main()

代码仅输出0.0,好像它不记得函数的最后一次调用一样,并且每次都重新启动计数。我也尝试了相同的代码,但使用了RAM(psutil.Process(process_pid).memory_info().rss),效果很好。

我有一项耗费资源的任务,我想监视该进程的CPU使用率。我需要cpu百分比以较高且恒定的速率刷新,这意味着只需添加print(psutil.cpu_percent(...
multiprocessing cpu-usage pid monitor psutil
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.