我们有一个Python命令行实用程序,它通过API调用来下载大文件,我们想看看程序在内存有限(小于等于1gb)的机器上运行时的表现。你知道吗
一种方法是使用虚拟化层(Docker容器或Vagrant虚拟盒)创建具有指定内存量的操作系统。但我对另一种方法感兴趣。你知道吗
我想知道是否有一种方法可以限制Python进程可用的内存量,这样我就可以运行命令行接口来进行API调用,但将其限制为最大内存(比如)512MB来测试内存不足的问题。你知道吗
正在寻找适用于Mac OS X(运行10.14+)或Linux的解决方案。你知道吗
Tags:
如果您真的想在Python中实现这一点,您可以尝试查看resource doc,它有一些方法可以使用
setrlimit()
来设置这里列出的资源的限制,内存就是其中之一。不确定这是否有用。你知道吗使用setrlimit设置最大内存大小
根据@Alexis Drakopoulos's answer,
resource
模块可用于设置Python脚本使用的最大虚拟内存量,但需要注意的是,此方法仅适用于基于Linux的系统,而不适用于基于BSD的系统,如Mac OS X。你知道吗要修改限制,请在Python脚本中添加以下对
setrlimit
的调用:(其中软/硬限制以字节为单位,它们的值通常相等)。你知道吗
快速示例
下面是一个快速示例,它将内存限制为1 MB左右,然后由于内存错误而无法导入
pandas
:为什么这在BSD系统上不起作用?
如果您检查手册页中的
getrlimit
或setrlimit
,您将看到一个RLIMIT_*
变量列表-但是BSD和Linux之间的列表是不同的。Linux getrlimit/setrlimit man page列出了RLIMIT_AS
,但是BSD getrlimit/setrlimit man page没有列出任何用于控制内存量的RLIMIT
变量。因此,即使resource.RLIMIT_AS
是在macosx上的resource
模块中定义的,设置它对内核或进程可用的内存量没有影响。你知道吗另见What do the two numbers returned by Python's resource.RLIMIT_VMEM (or resource.RLIMIT_AS) mean?
相关问题 更多 >
编程相关推荐