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 queuesreal-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”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

豆知识python启动http服务及ulimit命令

修改ulimit参数如何理解生效

【ulimit】Centos 7 中的ulimit -HSn 65535 对进程的文件句柄限制不生效??

ulimit调优|设置普通用户的ulimit值

修改ulimit参数

ulimit调优|设置普通用户的ulimit值