背景
在网上找了一个向量化模型,为控制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
中引用了其它模型
来使用,建议内存不要太低了,不然会导致启动失败