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

Zac*_*ach 9 python memory heap process

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

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

Dev*_*rre 2

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

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

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

至于沙箱的实现,已经有相对完善的测试实现。有什么理由不能使用这些吗?特别是请参阅 PyPy 的沙盒 VMZope 沙盒