代码之家  ›  专栏  ›  技术社区  ›  charlesreid1

Python的resource.RLIMIT_VMEM(或resource.RLIMIT_AS)返回的两个数字是什么意思?

  •  0
  • charlesreid1  · 技术社区  · 5 年前

    蟒蛇的 resource 模块允许获取和设置各种系统资源使用信息。特别是,进程使用的内存量可以通过 resource.RLIMIT_VMEM (或者,在某些系统上, resource.RLIMIT_AS 根据 this StackOverflow 回答)。

    当我运行以下Python代码(使用Python 3.7)来打印内存使用情况时,我看到一个具有两个值的元组:

    import resource
    print(resource.getrlimit(resource.RLIMIT_AS))
    

    在Ubuntu18.04上,它打印 (-1, -1) (我的意思是,这两个值都是无限的)。

    在Mac OS X 10.4上,它可以打印 (9223372036854775807, 9223372036854775807) (大约是字节的字节值)。

    关于这个输出,我有两个问题:

    1. 第一个数字和第二个数字有什么区别?

    2. 报告的值应该如何 9223372036854775807 被解释-它们是字节数吗?(一个非常大的值仅仅是一种设置内存限制的方法吗?内存限制如此之大,以至于永远无法达到?)

    1 回复  |  直到 5 年前
        1
  •  1
  •   Matt Zimmerman    5 年前

    这两个值对应于 rlim_cur (“软限制”)和 rlim_max (“硬限制”)来自 getrlimit 系统调用。这记录在 library documentation for the resource module .

    价值 -1 对应于 resource.RLIM_INFINITY 常数,这意味着没有设定的限制。

    单位 RLIMIT_AS 定义为字节,记录 here :

    资源.RLIMIT 可由进程占用的地址空间的最大面积(以字节为单位)。

    您可以在 getrlimit(2) 手册页。