You are here:  Home » Python » 资源使用信息 – Unix特定服务(Python教程)(参考资料)

resource资源使用信息


本模块提供了测量和控制程序使用的系统资源的基本机制.

符号常量用于指定特定的系统资源,并请求有关当前进程或其子进程的使用信息.

一个OSError因系统调用失败而引发的问题

exception resource.error
一个弃用的别名OSError.

改版3.3:以下PEP 3151 ,这个类是@的别名OSError.

资源限制

使用setrlimit()下面描述的功能。每个资源由一对限制控制:软限制和硬限制。软限制是电流限制,可以随着时间的推移逐渐降低或提高。软限制永远不会超过硬限制。硬限制可以降低到大于软限制的任何值,但不会升高。(只有具有超级用户有效UID的进程才能提高硬限制。)

可以限制的特定资源取决于系统。它们在中描述getrlimit(2)手册页。当底层操作系统支持它们时,支持下面列出的资源;对于那些平台,在这个模块中没有定义操作系统无法检查或控制的资源.

resource.RLIM_INFINITY
常量用于表示无限资源的限制.
resource.getrlimitresource
返回一个元组(soft, hard)目前的软硬限制resource。提高ValueError如果指定了无效资源,或error如果底层系统调用意外失败.
resource.setrlimit (resource, limits)
设置新的消耗限制resourcelimits论点必须是(soft, hard)描述新限制的两个整数。值RLIM_INFINITY可用于请求无限制的限制.

增加ValueError如果指定了无效资源,如果新的softlimit超出硬限制,或者进程试图提高其硬限制。指定RLIM_INFINITY当该资源的硬系统限制不是无限制时,将导致ValueError。具有超级用户有效UID的进程可以请求任何有效限制值,包括无限制,但ValueError如果要求的限制超过系统强制限制,将仍然会被提升。

setrlimit也可以举起error如果底层系统调用失败.

resource.prlimitpid, resource[, limits]
结合setrlimit()getrlimit()在一个函数中,支持获取和设置任意进程的资源限制。如果pid为0,则调用适用于当前进程。resourcelimits与中的含义相同setrlimit(),除了limits是可选的.

当没有给出limits时,函数返回resource进程的pid限制。当limits给出resource进程限制设置,返回原资源限制.

提高ProcessLookupError什么时候 pid无法找到和PermissionError当用户没有CAP_SYS_RESOURCE为了这个过程

可用性:使用glibc 2.13或更高版本Linux 2.6.36或更高版本.

版本3.4.

这些符号定义了可以使用setrlimit()getrlimit()功能如下所述。这些符号的值正是C程序使用的常数.

Unix手册页getrlimit(2)列出可用资源。请注意,并非所有系统都使用相同的符号或相同的值来表示相同的资源。此模块不会尝试屏蔽平台差异 – 该平台上的此模块将无法获得未为平台定义的符号.

resource.RLIMIT_CORE
当前进程可以创建的核心文件的最大大小(以字节为单位)。如果需要更大的核心来包含整个过程映像,这可能会导致创建部分核心文件.
resource.RLIMIT_CPU
进程可以使用的最大处理器时间(以秒为单位)。如果超过此限制,则SIGXCPU信号被发送到进程。(Seethe signal有关如何捕获此信号并执行某些有用操作的信息的模块文档,例如将打开的文件刷新到磁盘。)
resource.RLIMIT_FSIZE
进程可能创建的文件的最大大小.
resource.RLIMIT_DATA
进程堆的最大大小(以字节为单位)
resource.RLIMIT_STACK
当前进程的调用堆栈的最大大小(以字节为单位)。这只会影响多线程进程中主线程的堆栈.
resource.RLIMIT_RSS
应该为进程提供的最大驻留集大小.
resource.RLIMIT_NPROC
当前进程可能创建的最大进程数.
resource.RLIMIT_NOFILE
当前进程的最大打开文件描述符数.
resource.RLIMIT_OFILE
的BSD名称RLIMIT_NOFILE.
resource.RLIMIT_MEMLOCK
可以锁定在内存中的最大地址空间.
resource.RLIMIT_VMEM
进程占用的最大映射内存区域.
resource.RLIMIT_AS
进程可能占用的地址空间的最大区域(以字节为单位).
resource.RLIMIT_MSGQUEUE
可以为POSIX消息队列分配的字节数.

Availability:Linux 2.6.8或更高版本.

新版本3.4.

resource.RLIMIT_NICE
该过程的上限很好(计算为20 – rlim_cur).

可用性:Linux 2.6.12或更高版本.

新版本3.4.

resource.RLIMIT_RTPRIO
实时优先级的上限

可用性:Linux 2.6.12或更高版本.

新版本3.4.

resource.RLIMIT_RTTIME
进程在不进行阻塞系统调度的情况下实时调度所花费的CPU时间的时间限制(以微秒为单位)

Availability:Linux 2.6.25或更高版本.

版本3.4中的新功能.

resource.RLIMIT_SIGPENDING
进程可能排队的信号数量

可用性:Linux 2.6.8或更高版本.

新的版本3.4.

resource.RLIMIT_SBSIZE
此用户的套接字缓冲区使用的最大大小(以字节为单位)。这限制了此用户随时可以容纳的网络内存量,从而限制了mbuf的数量.

可用性:FreeBSD 9或更高版本.

新版本3.4.

resource.RLIMIT_SWAP
所有此用户标识进程可以保留或使用的交换空间的最大大小(以字节为单位)。仅当设置了vm.overcommit sysctl的第1位时才强制执行此限制。请参阅tuning(7)以获取这个sysctl的完整描述.

Availability:FreeBSD 9或更高版本.

3.4版本中的新版.

resource.RLIMIT_NPTS
伪终端的最大数量由这个用户id.

Availability创建:FreeBSD 9或更高版本.

版本3.4.

资源使用情况

这些函数用于检索资源使用信息:

resource.getrusagewho
此函数返回一个对象,该对象描述当前进程或其子进程所消耗的资源,如指定的那样通过who参数。who参数应使用下面描述的RUSAGE_*常量之一来指定.

返回值的字段各自描述了如何使用特定系统资源,例如,运行所花费的时间是用户模式或进程从主内存换出的时间。一些值取决于内部的时钟刻度,例如进程使用的内存量.

为了向后兼容,返回值也可以作为16元素的元组来访问.

字段ru_utimeru_stime返回值是浮点值,分别表示在用户模式中执行所花费的时间量和在系统模式下执行所花费的时间量。其余值是整数。有关这些值的详细信息,请参阅getrusage(2)手册页。这里给出一个简短的总结:

索引 字段 资源
0 ru_utime 用户模式下的时间(浮动)
1 ru_stime 系统中的时间mode(float)
2 ru_maxrss 最大驻留大小
3 ru_ixrss 共享内存大小
4 ru_idrss 非共享内存大小
5 ru_isrss 非共享堆栈大小
6 ru_minflt 页面错误没有需要I / O
7 ru_majflt page故障需要I / O
8 ru_nswap 交换次数
9 ru_inblock 阻止输入操作
10 ru_oublock 阻止输出操作
11 ru_msgsnd 发送的消息
12 ru_msgrcv 收到的消息
13 ru_nsignals 收到的信号
14 ru_nvcsw 自愿上下文切换
15 ru_nivcsw 非自愿的上下文切换

如果无效的话//这个函数会调出ValueError who参数指定。它也可能会提升error特殊情况下的例外情况.

resource.getpagesize
返回系统页面中的字节数。(这不一定与硬件页面大小相同。)

以下RUSAGE_*符号传递给getrusage()用于指定应提供哪些进程信息的功能.

resource.RUSAGE_SELF
传递给 getrusage()请求调用进程消耗的资源,这是进程中所有线程使用的资源总和.
resource.RUSAGE_CHILDREN
传递给 getrusage()请求已终止并等待的调用进程的子进程所消耗的资源.
resource.RUSAGE_BOTH
传递给 getrusage()请求当前进程和子进程消耗的资源。可能无法在所有系统上使用.
resource.RUSAGE_THREAD
通过getrusage()请求当前线程消耗的资源。可能并非适用于所有系统.

新版本3.2.