Python:基于负载、时间等监控和终止/限制派生的进程

Python:基于负载、时间等监控和终止/限制派生的进程,python,Python,我有一个工人队列,他们使用子流程生成外部第三方应用程序。我想控制这些进程占用服务器的总资源量。其中一些外部应用程序也会由于未知原因而挂起,需要重新启动才能修复 以下哪种方式比较好: 用python监控整个服务器负载(比如,负载平均值或vmstat的等效值) 监视我生成的进程的cpu负载 如果进程占用的时间太长或占用的cpu太多,请杀死我生成的进程 基本上,我需要能够通过生成的线程控制服务器上的负载 希望有一个包或库可以帮我完成所有这些工作。至于控制CPU,您需要使用它来启动进程 要监视系统负

我有一个工人队列,他们使用子流程生成外部第三方应用程序。我想控制这些进程占用服务器的总资源量。其中一些外部应用程序也会由于未知原因而挂起,需要重新启动才能修复

以下哪种方式比较好:

  • 用python监控整个服务器负载(比如,负载平均值或vmstat的等效值)
  • 监视我生成的进程的cpu负载
  • 如果进程占用的时间太长或占用的cpu太多,请杀死我生成的进程
基本上,我需要能够通过生成的线程控制服务器上的负载


希望有一个包或库可以帮我完成所有这些工作。

至于控制CPU,您需要使用它来启动进程


要监视系统负载和与当前运行的进程相关的其他统计信息,您可以查看标准python库(
os.getloadavg()
os.kill()
subprocess.Popen.kill()
)中提供的。

函数来获取负载平均值和kill进程。剩下的部分有一个包(
psutil.Process.get_cpu_times()
psutil.Process.get_cpu_percent()
psutil.Process.get_memory_info()
psutil.Process.get_memory_percent()
等等)

用python监控整个服务器负载(比如说,平均负载或相当于vmstat的负载)

>>> import psutil, subprocess >>> subp = subprocess.Popen('python', stdout=subprocess.PIPE, stderr=subprocess.PIPE) >>> proc = psutil.Process(subp.pid) >>> rss, vms = proc.get_memory_info() >>> print "Resident memory: %s KB" %(rss / 1024) Resident memory: 136 KB >>> print "Virtual memory: %s KB" %(vms / 1024) Virtual memory: 356 KB >>> print proc.get_memory_percent() 0.00324324118077 >>>导入psutil,子进程 >>>subp=subprocess.Popen('python',stdout=subprocess.PIPE,stderr=subprocess.PIPE) >>>proc=psutil.Process(子pid) >>>rss,vms=proc.get\u memory\u info() >>>打印“驻留内存:%s KB”%(rss/1024) 常驻内存:136 KB >>>打印“虚拟内存:%s KB”%(虚拟机/1024) 虚拟内存:356KB >>>打印过程获取内存百分比() 0.00324324118077 监视我生成的进程的cpu负载

>>> proc.get_cpu_percent() 0.0 >>>进程获取cpu百分比() 0 如果进程占用的时间太长或占用的cpu太多,请杀死我生成的进程

>>> proc.kill() >>> >>>程序kill() >>>