我使用Pythonresource module来限制内存使用,方法如下:
import resource
rsrc = resource.RLIMIT_AS
soft, hard = resource.getrlimit(rsrc)
resource.setrlimit(rsrc, (soft, 5*1024*1024)) # hard limit = 5GB
但是,我遇到了以下问题:
hard
限制是-1
。这个值是什么意思?问题是,因为它是负的,所以我不能将硬限制设置为更高的值,并且会收到一条错误消息(ValueError: current limit exceeds maximum limit
)。在resource
模块没有RLIMIT_VMEM
。当试图访问resource.RLIMIT_VMEM
时,我得到一个错误(AttributeError: 'module' object has no attribute 'RLIMIT_VMEM'
)。这可能是由我的操作系统的兼容性问题引起的吗?在
如果您阅读了
getrlimit()
linuxc调用和prlimit
命令行工具的手册页,它们模糊地暗示了-1是常量RLIM_INFINITY
的值。在您可以在Python中对此进行验证。在
所以,本质上你要设置一个无限的软极限和一个小于这个的硬极限。硬限制必须大于或等于软限制。你应该这样做。在
^{pr2}$关于你的第二个问题,我很想知道答案,这就是我为什么要问这个问题的原因:)
第2部分的答案:
resource
模块文档提到了这种可能性:来源:Limit memory usage?
相关问题 更多 >
编程相关推荐