Python限制内存和cpu使用量的操作是什么
Admin 2022-09-02 群英技术资讯 1037 次浏览
本篇内容介绍了“Python限制内存和cpu使用量的操作是什么”的有关知识,在实际项目的操作过程或是学习过程中,不少人都会遇到这样的问题,接下来就让小编带大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux系统中,使用Python对内存和cpu使用量设置限制需要通过resource模块来完成。
resource文档地址:resource — Resource usage information
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信号。程序就会做清理工作然后退出。
def limit_memory(maxsize): soft, hard = resource.getrlimit(resource.RLIMIT_AS) resource.setrlimit(resource.RLIMIT_AS, (maxsize, hard))
当设定了内存限制后,如果没有更多的内存可用,程序就会开始产生MemoryError异常。
注:以上示例代码来源于:《Python Cookbook》P575 “给内存和cpu使用量设置限制”。
# -*- 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))
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
我们在使用python做接口测试的时候,会需要python的单元测试框架,在python中单元测试框架很多unittest、pytest、nose等,这篇文章就给介绍一下python的单元测试框中pytest和unittest区别是什么,接下来我们一起看看吧。
如果字典中存储了一些值,我想要取出来该怎么操作呢?取出字典中所有的键-值对时,可以使用items()返回一个键值对列表,并配合for循环进行遍历
今天就带大家详细总结一下Python闭包和装饰器的相关知识,需要的朋友可以参考下
这篇文章主要为大家介绍了Python中的字符串格式化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
今天小编就为大家分享一篇关于Python字符串逆序输出的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008