在Python脚本中,我想为某个函数调用设置内存限制。我在看如何限制堆大小 https://stackoverflow.com/questions/2308091/how-to-limit-python-heap-size;但是,我不想限制整个正在运行的 Python 进程的内存——即在函数调用之前和之后设置内存限制。
有什么方法可以使用给定的内存量进行函数调用,以便内存限制不会影响调用者?
不,这是不可能的。 Python 不会跟踪哪些函数负责分配新内存,libc 也不会跟踪,因此无法仅通过单个函数来限制内存使用。
为了做到这一点,你必须修改 Python,以便使用一个新函数来分配内存,该函数需要指定 Python 函数负责的内容,以便在该函数超出其限制时它可以拒绝内存分配。
正如 @JBernardo 所说,执行此操作的唯一其他方法确实是在内存有限的单独进程中执行该函数。
至于沙箱的实现,已经有相对完善的测试实现。有什么理由不能使用这些吗?特别是参见 PyPy 的沙盒虚拟机 http://pypy.org/features.html和佐普沙盒 http://pypi.python.org/pypi/RestrictedPython.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)