python如何给内存和cpu使用量设置限制
给内存和cpu使用量设置限制
在linux系统中,使用Python对内存和cpu使用量设置限制需要通过resource模块来完成。
resource文档地址:resource — Resource usage information
限制Python进程cpu使用时间的样例如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import signal import resource import os def time_exceeded(signo, frame): print ( "time's up" ) raise SystemExit( 1 ) def set_max_runtime(seconds): soft,hard = resource.getrlimit(resource.RLIMIT_CPU) resource.setrlimit(resource.RLIMIT_CPU, (seconds, hard)) signal.signal(signal.SIGXCPU, time_exceeded) if __name__ = = '__main__' : set_max_runtime( 5 ) while True : pass |
运行上述代码,当超时时会产生SIGXCPU信号。程序就会做清理工作然后退出。
要限制内存的使用可以使用如下函数
1 2 3 | def limit_memory(maxsize): soft, hard = resource.getrlimit(resource.RLIMIT_AS) resource.setrlimit(resource.RLIMIT_AS, (maxsize, hard)) |
当设定了内存限制后,如果没有更多的内存可用,程序就会开始产生MemoryError异常。
注:以上示例代码来源于:《Python Cookbook》P575 “给内存和cpu使用量设置限制”。
查询windows的cpu、内存使用率
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # -*- coding: UTF-8 -*- import os def get_info(metric): metric_cmd_map = { "cpu_usage_rate" : "wmic cpu get loadpercentage" , "mem_total" : "wmic ComputerSystem get TotalPhysicalMemory" , "mem_free" : "wmic OS get FreePhysicalMemory" } out = os.popen( "{}" . format (metric_cmd_map.get(metric))) value = out.read().split( "\n" )[ 2 ] out.close() return float (value) # cpu使用率 cpu_usage_rate = get_info( 'cpu_usage_rate' ) print ( "windows的CPU使用率是{}%" . format (cpu_usage_rate)) # 无法直接查出内存使用率,总内存单位是b,而剩余内存单位是kb mem_total = get_info( 'mem_total' ) / 1024 mem_free = get_info( 'mem_free' ) mem_usage_rate = ( 1 - mem_free / mem_total) * 100 print ( "windows的内存使用率是{}%" . format (mem_usage_rate)) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
最新评论