【发布时间】:2019-11-19 20:09:51
【问题描述】:
我有一个需要资源的任务,我想监控进程的 CPU 使用率。我需要 cpu 百分比以较高的恒定速率刷新,这意味着只需在内部的各个点添加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),效果很好。
【问题讨论】:
标签: multiprocessing cpu-usage pid monitor psutil