Python |如何限制内存和 CPU 的使用
本文旨在展示如何限制正在运行的程序的内存或 CPU 使用。要做到这一点,可以使用资源模块,这样两个任务都可以很好地执行,如下面给出的代码所示:
代码#1:限制 CPU 时间
# importing libraries
import signal
import resource
import os
# checking time limit exceed
def time_exceeded(signo, frame):
print("Time's up !")
raise SystemExit(1)
def set_max_runtime(seconds):
# setting up the resource limit
soft, hard = resource.getrlimit(resource.RLIMIT_CPU)
resource.setrlimit(resource.RLIMIT_CPU, (seconds, hard))
signal.signal(signal.SIGXCPU, time_exceeded)
# max run time of 15 millisecond
if __name__ == '__main__':
set_max_runtime(15)
while True:
pass
当运行该代码的时间到期,程序可以清理并退出时,就会产生 SIGXCPU 信号。
代码#2:为了限制内存使用,代码对总地址空间进行了限制
# using resource
import resource
def limit_memory(maxsize):
soft, hard = resource.getrlimit(resource.RLIMIT_AS)
resource.setrlimit(resource.RLIMIT_AS, (maxsize, hard))
当没有更多的内存可用时,程序将开始生成内存错误和内存限制异常。
它是如何工作的?
- 要设置特定资源的软限制和硬限制,请使用 setrlimit() 函数。
- 软限制是操作系统将通过信号通知进程或通常限制进程的一个值。
- 值的上限由硬限制定义,它可用于软限制。
- 虽然硬限制可以降低,但用户进程永远不能提高它,它由系统管理员设置的系统范围参数控制。(即使过程降低了自身)。
- setrlimit() 功能还可以用来设置子进程数量、打开文件数量和类似系统资源的限制。
本文中的代码仅适用于 Unix 系统,可能不适用于所有这些系统。
版权属于:月萌API www.moonapi.com,转载请注明出处