【问题标题】:What is Python's equivalent to 'ulimit'?Python 的“ulimit”是什么?
【发布时间】:2022-01-17 22:51:33
【问题描述】:

我正在尝试在 Python 中检查当前 shell(基本上是 ulimit 中的所有内容)的系统资源,以查看是否可以分配足够的资源。我找到了resource 模块,但它似乎没有ulimit 提供的所有信息(例如POSIX message queuesreal-time priority)。有没有办法在不使用外部库的情况下在 Python 中找到这些软限制和硬限制?如果可能的话,我想避免将ulimit 作为子进程运行,但如果这是唯一的方法,我会这样做。

【问题讨论】:

  • resource 模块是正确的地方。看起来它还没有更新以了解最近 Linux 版本中添加的资源限制。 RLIMIT_MSGQUEUE 在 2.6.8 中添加,RLIMIT_RRTIME 在 2.6.12 中添加。
  • 您也许可以在 C 头文件中查找常量的值并使用它们。

标签: python unix resources ulimit


【解决方案1】:

使用resource.getrlimit()。如果resource 包中没有常量,请在/usr/include/bits/resource.h 中查找:

$ grep RLIMIT_MSGQUEUE /usr/include/bits/resource.h
  __RLIMIT_MSGQUEUE = 12,
#define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE

然后你可以自己定义常量:

import resource
RLIMIT_MSGQUEUE = 12
print(resource.getrlimit(RLIMIT_MSGQUEUE))

【讨论】:

  • 谢谢!效果很好,只需要确保捕获ValueError,以防操作系统上未定义资源。
  • 我发现常量也在resource模块中定义,即resource.RLIMIT_MSGQUEUE
猜你喜欢
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2013-01-06
  • 2013-03-28
  • 2017-07-08
  • 2019-07-30
相关资源
最近更新 更多