Python中相当于"ulimit"的是什么?

5
我正在尝试在Python中实现对当前shell系统资源(基本上是ulimit中的所有内容)的检查,以查看是否可以分配足够的资源。我已经找到了resource模块,但它似乎没有ulimit提供的所有信息(例如POSIX消息队列实时优先级)。有没有办法在Python中找到这些软限制和硬限制而不使用外部库?如果可能的话,我想避免作为子进程运行ulimit,但如果这是唯一的方法,我会这样做。

“resource” 模块是正确的位置。 它看起来只是没有更新以了解最近 Linux 版本中添加的资源限制。例如,2.6.8 中添加了 RLIMIT_MSGQUEUE,2.6.12 中添加了 RLIMIT_RRTIME - Barmar
你可以查找C头文件中常量的值并使用它们。 - Barmar
1个回答

6

使用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异常。 - Wesley Wang
1
我发现常量也被定义在 resource 模块中,例如 resource.RLIMIT_MSGQUEUE - user1330734

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接