python资源中的软硬限制

时间:2020-02-26 01:29:26

标签: python resources python-internals

python的resource中的 soft hard 限制之间的实际区别是什么?

例如,做之间有什么区别

import resource
soft_limit,hard_limit=resource.getrlimit(resource.RLIMIT_DATA)

# set soft limit
resource.setrlimit(resource.RLIMIT_DATA, (1024,hard_limit))

# set soft and hard limit
resource.setrlimit(resource.RLIMIT_DATA, (1024,1024))

最后,是的,我已经阅读了软限制和硬限制的文档,但实际上仍然不了解有什么区别:

可以使用下面描述的setrlimit()函数来限制资源使用。每个资源由一对限制控制:一个软限制和一个硬限制。软极限是当前极限,并且可以随着时间的流逝而降低或升高。软限制永远不能超过硬限制。硬限制可以降低到大于软限制的任何值,但不能提高。 (只有具有超级用户有效UID的进程才能提出硬限制。)

1 个答案:

答案 0 :(得分:3)

CPython的resource显然使用了sys/resource中的setrlimit。浏览GNU's libc manual时,它是在当前(软性)和硬性限制上说的:

与资源相关联的每个进程有两个限制:

当前限制

当前限制是系统不允许使用量超过的值。之所以称为“软限制”,是因为受限制的过程通常可以随意提高当前限制。

最大限制

最大限制是允许进程设置其当前限制的最大值。它也被称为“硬限制”,因为流程无法绕开它。进程可以降低自己的最大限制,但只有超级用户可以增加最大限制。

所以tl; dr:软是因为一个进程可以增加其限制,而硬是因为它不能增加,差异在您添加的文档的最后括号括起来:

(只有具有超级用户有效UID的进程才能提出硬限制。)