Python 的“ulimit”是啥?
Posted
技术标签:
【中文标题】Python 的“ulimit”是啥?【英文标题】:What is Python's equivalent to 'ulimit'?Python 的“ulimit”是什么? 【发布时间】:2022-01-17 22:51:33 【问题描述】:我正在尝试在 Python 中检查当前 shell(基本上是 ulimit
中的所有内容)的系统资源,以查看是否可以分配足够的资源。我找到了resource
模块,但它似乎没有ulimit
提供的所有信息(例如POSIX message queues
和real-time priority
)。有没有办法在不使用外部库的情况下在 Python 中找到这些软限制和硬限制?如果可能的话,我想避免将ulimit
作为子进程运行,但如果这是唯一的方法,我会这样做。
【问题讨论】:
resource
模块是正确的地方。看起来它还没有更新以了解最近 Linux 版本中添加的资源限制。 RLIMIT_MSGQUEUE
在 2.6.8 中添加,RLIMIT_RRTIME
在 2.6.12 中添加。
您也许可以在 C 头文件中查找常量的值并使用它们。
【参考方案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
以上是关于Python 的“ulimit”是啥?的主要内容,如果未能解决你的问题,请参考以下文章