Python:为特定函数调用设置内存限制

时间:2012-04-22 16:54:03

标签: python memory process heap

在Python脚本中,我想为某个函数调用设置内存限制。我看了how to limit heap size;但是,我不想限制整个正在运行的Python进程的内存 - 即在函数调用之前和之后设置内存限制。

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

1 个答案:

答案 0 :(得分:2)

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

为了做到这一点,你必须修改Python,以便你使用一个新函数来分配内存,要求它指定Python函数负责的内容,以便它可以拒绝内存分配,如果该函数超过它的限制。

执行此操作的唯一方法实际上是在内存有限的单独进程中执行该函数,正如@JBernardo所说。

至于实现沙箱,已经有相对良好的测试实现。你有什么理由不能使用它们吗?特别参见PyPy的sandboxed VMZope sandbox