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()
>>>