关于限制Python运行内存方法

3 阅读1分钟

背景

在网上找了一个向量化模型,为控制Python在运行时的最大内存,所以考虑在运行Python时做一些资源上限的控制策略,目前Python不能直接限制内存使用,我们需要利用一些其它工具来控制

解法

使用 ulimi

临时限制(当前会话):

```
bash
ulimit -v 1572864  # 限制为 1.5 GB 的虚拟内存
python your_script.py
```

永久限制(需要编辑用户的 shell 配置文件,如 .bashrc.profile):

```
bash
ulimit -v 1572864
```

使用 cgroups

控制组(cgroups)是 Linux 内核的一个特性,它允许您对一组进程的资源利用进行细粒度的控制和监控。

创建一个新的 cgroup,并设置内存限制:

```
bash
sudo cgcreate -g memory:your_group
sudo cgset -r memory.limit_in_bytes=1572864000 demo  # 1.5 GB
```

运行 Python 脚本在这个 cgroup 中:

```
bash
sudo cgexec -g memory:your_group python demo.py
```

其它还可以利用Docker的能力来做限制

提示: 如果Python中引用了其它模型来使用,建议内存不要太低了,不然会导致启动失败