在 Linux 中限制Python程序所能使用的最大内存

时间:2021-05-02

如果程序开发不当,可能会出现占用过多内存的情况。特别是在Docker里面,如果Python程序占用太多内存,可能会导致Docker容器死掉。

为了限制Python程序所能使用的最大内存,我们可以使用Python自带的resource模块。

首先获取系统默认的内存soft上限和hard上限:

  • importresource
  • 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上可能会有问题。

    原文地址:https://mp.weixin.qq.com/s/RDgQE3SvllMJ7jYO8O9w-w

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章