我想启动一个始终在后台运行的芹菜进程。我希望这些正在运行的进程能够跟踪所有其他进程的系统资源(CPU、RAM等(使用情况,这些进程将在需要并行执行新任务时启动。然后我希望跟踪过程定期将数据记录到文件中。
如果上述实现是可能的,那么在生产设置中使用是否安全?
我没有试过,但我读过关于psutil和py spy的文章。但我不确定它们是否可以用于跟踪另一个并行过程的过程
已经阅读了关于psutil和py spy的内容。但我不确定它们是否可以用于跟踪另一个并行进程的进程。
是的,他们可以。
它们类似于分叉出一个$ ps axup ${PID}
子代。如果ps可以获得统计数据,那么psutil也可以。
使用wait4()
显然只适用于儿童。
使用getrusage()
对自己和孩子都有效。
从前,ps需要sguid权限才能读取/dev/kmem。/proc伪文件系统清理了一些权限相关细节。
psutil当然可以。
import psutil
p=psutil.Process(121000) # a pid you want to track. Father, son, brother, unrelated. It doesn't matter
p.cpu_percent()
# 1.4 my process use 1.4% of a cpu
p.cpu_times()
# pcputimes(user=42.4, system=0.01, children_user=0.0, children_system=0.0, iowait=0.01)
# Or detail
p.cpu_times().user, p.cpu_times().system
# Time spend so far, in sec
p.memory_percent()
#0.14 (0,14% memory used)