如何通过命令行限制Python脚本的内存使用



如何通过命令行限制Python脚本的内存使用?

对于上下文,我正在实现一个代码判断,因此我需要运行学生提交的每个脚本,我可以用以下命令为Java执行同样的操作:

java -Xmx<memoryLimit> Main 

到目前为止,Python没有运气,有什么想法吗?

PS:我使用的是Python 3.8

谢谢。

您可以在Linux系统上使用ulimit。(在Python中,还有resource.setrlimit()来限制当前进程。(

像这样的东西(对不起,我的Bash生锈了(应该是一个足够体面的包装:

#!/bin/bash
ulimit -m 10240  # kilobytes
exec python3 $@

然后运行例如that-wrapper.sh student-script.py

(也就是说,你确定你可以相信你的学生不会提交上传你的秘密SSH密钥和/或破坏你的文件系统的东西吗?我建议使用更强大的沙箱,比如在Docker容器中运行所有内容。(

不确定您为什么想要/需要它。与Java相比,Python非常擅长处理内存。它有适当的垃圾收集器,并且在使用内存方面非常高效。因此,在我10多年的python编程生涯中,我从未限制过python中的内存。然而,如果您真的需要它,请查看这个线程"将RAM使用限制为python程序"。似乎有人发布了解决方案。

您通常在操作系统级别限制内存,而不是在python本身。您也可以使用Docker来实现这一切。

最新更新