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))
当没有更多可用内存时,程序将开始生成具有内存限制的 MemoryError 异常。
这个怎么运作 ?
- 要对特定资源设置软硬限制,请使用setrlimit()函数。
- 软限制是操作系统将通过信号通知进程或通常对其进行限制的值。
- 值的上限由硬限制定义,它可以用于软限制。
- 尽管可以降低硬限制,但用户进程永远无法提高硬限制,并且由系统管理员设置的系统范围参数控制。 (即使过程降低了自身)。
- setrlimit()函数还可以用于设置诸如子进程数量、打开文件数量和类似系统资源之类的限制。
本文中的代码仅适用于 Unix 系统,并且可能不适用于所有系统。
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。