我想限制一个 Python 程序使用的 RAM 为一半,这样当所有 RAM 都被占用时程序就不会完全冻结。我正在使用下面的代码实现,但它并不起作用,我的笔记本电脑仍然会冻结:
import sys
import resource
def memory_limit():
rsrc = resource.RLIMIT_DATA
soft, hard = resource.getrlimit(rsrc)
soft /= 2
resource.setrlimit(rsrc, (soft, hard))
if __name__ == '__main__':
memory_limit() # Limitates maximun memory usage to half
try:
main()
except MemoryError:
sys.stderr.write('MAXIMUM MEMORY EXCEEDED')
sys.exit(-1)
我正在使用从main
函数调用的其他函数。
我做错了什么?
提前感谢您。
附注:我已经搜索了此问题并找到了我所放置的代码,但仍然无法工作...
ulimit
或prlimit
命令。或者设置一个内存限制的cgroup
并在其中运行脚本。我不确定自我限制是否是最好的主意——如果尝试检查或执行限制的代码需要在过程中分配内存,会发生什么? - twalbergsoft /= 100
或者soft //= 2
吗? - Gribouillis