Python';资源';模块-负值和无法识别的RLIMIT_VMEM
我使用Python是为了限制内存使用,方法如下:Python';资源';模块-负值和无法识别的RLIMIT_VMEM,python,resources,Python,Resources,我使用Python是为了限制内存使用,方法如下: 导入资源 rsrc=resource.RLIMIT_AS 软、硬=resource.getrlimit(rsrc) resource.setrlimit(rsrc,(软,5*1024*1024))#硬限制=5GB 但是,我遇到了以下问题: 当前的硬限制是-1。这个值的含义是什么?问题是,因为它是负数,所以我无法将硬限制设置为更高的值,并且我会收到一条错误消息(ValueError:current limit Over maximum limit
导入资源
rsrc=resource.RLIMIT_AS
软、硬=resource.getrlimit(rsrc)
resource.setrlimit(rsrc,(软,5*1024*1024))#硬限制=5GB
但是,我遇到了以下问题:
硬限制是-1
。这个值的含义是什么?问题是,因为它是负数,所以我无法将硬限制设置为更高的值,并且我会收到一条错误消息(ValueError:current limit Over maximum limit
)
resource
模块没有RLIMIT_VMEM
。尝试访问resource.RLIMIT_VMEM
时,我收到一个错误(AttributeError:'module'对象没有属性'RLIMIT_VMEM'
)。这可能是由于我的操作系统的兼容性问题造成的吗李>
如果您阅读
getrlimit()
LinuxC调用和prlimit
命令行工具的手册页,它们模糊地暗示-1是常量RLIM_无穷大
的值
您可以在Python中验证这一点
>>> resource.RLIM_INFINITY
-1
所以,本质上,你试图设置一个无限的软极限和一个小于这个的硬极限。硬限制必须大于或等于软限制。因此,你可以做一些类似的事情,这应该会起到作用
hard_limit=5*1024*1024
resource.setrlimit(rsrc,(硬限制,硬限制))
关于你的第二个问题,我很想知道答案,这正是我想到这个问题的原因:)第2部分的答案:
资源
模块文档提到了这种可能性:
此模块不尝试屏蔽平台差异-符号
此模块将无法在上为平台定义“未”
那个站台
根据上面链接的bash
ulimit
源代码,它使用
RLIMIT_AS
如果未定义RLIMIT_VMEM
来源:另外,RLIMIT_MEM和RLIMIT_AS之间有什么区别?输入单位不是字节吗?你的
5*1024*1024
极限不等于5MB而不是5GB吗?@Cyrille我也怀疑。。。