如果程序开发不当,可能会出现占用过多内存的情况。特别是在Docker里面,如果Python程序占用太多内存,可能会导致Docker容器死掉。
为了限制Python程序所能使用的最大内存,我们可以使用Python自带的resource模块。
首先获取系统默认的内存soft上限和hard上限:
- import resource
- soft, hard = resource.getrlimit(resource.RLIMIT_AS)
其中的resource.RLIMIT_AS实际上就是数字5,表示内存资源。而soft限制是一个可以调节的内存使用上限,hard是一个一旦设定就很难动态调整的内存使用量上限。
在我的电脑上运行效果如下图所示:
一开始soft和hard的值是一样的。并且它们的单位不是比特。而是比比特还小的单位。我的电脑是8GB内存,而8 * 1024 ^ 6 正好约等于这里的hard和soft的值。
接下来,设置当前运行的这个Python程序能够使用的最大内存:
- resource.setrlimit(resource.RLIMIT_AS, (最大上限, hard))
其中最大上限是一个整数。假设我想限制当前程序最多可以使用500MB的内存,那么这里的最大上限可以设置为:
- 0.5 * 1024 ^ 6 = 576460752303423488
所以设置为:
- resource.setrlimit(resource.RLIMIT_AS, (576460752303423488, hard))
那么当前Python程序使用的内存超过500MB以后,程序就会抛出MemoryError。
最后,这些代码只能在Linux系统上正常工作。Windows和Mac上可能会有问题。
2月份GitHub上最热门的Python开源项目排行已经出炉啦,这个月和币圈相关的开源项...
在软件定义数据中心领域,VMware是近几年来的第一大软件供应商。所谓软件定义数...
本文将基于阿里云 Elasticsearch,通过快速创建、访问实例,并使用 Restful API...
引言 随着大数据时代的来临,大数据产品层出不穷。我们最近也对一款业内非常火的...
回望2020,这绝对是个让所有人都难以忘怀的年份。 突如其来的疫情黑天鹅事件短时...
一起来看近日结拍、成交 域名 : .com canzan.com:一口价40000元被秒,该域名有...
总结程序员在团队开发中常犯的问题,千万注意! 大家好,我是鱼皮,还记得我的老...
Web服务器租用保障服务器安全的技巧总汇 伴随着互联网技术的高速发展,服务器已...
VPS主机是通过技术将一整台服务器分隔成很多小的服务器,在VPS上可以安装虚拟主...
10月28日,腾讯云发起面向内容产业创作者和开发者的 松竹行动,通过正版图库直通...