[英]Python: Monitoring and killing/throttling spawned processes based on load, time, etc
我有一个工作队列,使用子进程生成外部第三方应用程序。 我想控制这些进程消耗的服务器的总资源量。 其中一些外部应用程序也会因为未知原因而挂起,并通过重新启动进行修复。
什么是好方法:
基本上我需要能够控制我使用生成的线程放在我的服务器上的负载。
希望有一个包或库可以为我做这一切吗?
函数来得到平均负载,并杀死进程是在标准Python库可用( os.getloadavg()
os.kill()
subprocess.Popen.kill()
其余的有一个psutil
包( 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
监控我产生的进程的CPU负载?
>>> proc.get_cpu_percent() 0.0
如果他们花费太长时间或占用过多的CPU,我会杀死我已经产生的进程?
>>> proc.kill() >>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.