如何通过命令行限制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来实现这一切。