10

在 Python 脚本中,我想为某个函数调用设置内存限制。我研究了如何限制堆大小;但是,我不想限制整个正在运行的 Python 进程的内存——即在函数调用之前和之后设置内存限制。

有没有办法用给定的内存量进行函数调用,这样内存限制就不会影响调用者?

4

1 回答 1

2

不,这是不可能的。Python 不跟踪哪些函数负责分配新内存,libc 也不跟踪,因此无法仅通过单个函数来限制内存使用。

为此,您必须修改 Python,以便使用一个新函数来分配内存,该函数需要指定哪个 Python 函数负责,以便在该函数超出其限制时拒绝内存分配。

正如@JBernardo 所说,这样做的唯一其他方法确实是在内存有限的单独进程中执行该函数。

至于实现沙箱,已经有相对良好的测试实现。你有什么理由不能使用这些吗?特别是看到 PyPy 的沙盒虚拟机Zope 沙盒

于 2012-04-25T16:26:14.947 回答