Python限制内存和CPU使用量的方法(Unix系统适用)

 更新时间:2020年08月04日 16:27:33   作者:David Beazley  
这篇文章主要介绍了Python限制内存和CPU的使用量的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

问题

你想对在Unix系统上面运行的程序设置内存或CPU的使用限制。

解决方案

resource 模块能同时执行这两个任务。例如,要限制CPU时间,可以像下面这样做:

import signal
import resource
import os

def time_exceeded(signo, frame):
 print("Time's up!")
 raise SystemExit(1)

def set_max_runtime(seconds):
 # Install the signal handler and set a resource limit
 soft, hard = resource.getrlimit(resource.RLIMIT_CPU)
 resource.setrlimit(resource.RLIMIT_CPU, (seconds, hard))
 signal.signal(signal.SIGXCPU, time_exceeded)

if __name__ == '__main__':
 set_max_runtime(15)
 while True:
  pass

程序运行时,SIGXCPU 信号在时间过期时被生成,然后执行清理并退出。

要限制内存使用,设置可使用的总内存值即可,如下:

import resource

def limit_memory(maxsize):
 soft, hard = resource.getrlimit(resource.RLIMIT_AS)
 resource.setrlimit(resource.RLIMIT_AS, (maxsize, hard))

像这样设置了内存限制后,程序运行到没有多余内存时会抛出 MemoryError 异常。

讨论

在本节例子中,setrlimit() 函数被用来设置特定资源上面的软限制和硬限制。 软限制是一个值,当超过这个值的时候操作系统通常会发送一个信号来限制或通知该进程。 硬限制是用来指定软限制能设定的最大值。通常来讲,这个由系统管理员通过设置系统级参数来决定。 尽管硬限制可以改小一点,但是最好不要使用用户进程去修改。

setrlimit() 函数还能被用来设置子进程数量、打开文件数以及类似系统资源的限制。 更多详情请参考 resource 模块的文档。

需要注意的是本节内容只能适用于Unix系统,并且不保证所有系统都能如期工作。 比如我们在测试的时候,它能在Linux上面正常运行,但是在OS X上却不能。

以上就是Python限制内存和CPU的使用量的方法的详细内容,更多关于Python限制内存和CPU的资料请关注脚本之家其它相关文章!

相关文章

  • python文件处理详解

    python文件处理详解

    这篇文章主要介绍了Python 处理文件的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • Python Web框架Tornado运行和部署

    Python Web框架Tornado运行和部署

    这篇文章主要为大家详细介绍了Python Web框架Tornado运行和部署的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Python multiprocessing 进程间通信方式实现

    Python multiprocessing 进程间通信方式实现

    本文主要介绍了Python multiprocessing 进程间通信方式实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python正则表达式及使用正则表达式的例子

    python正则表达式及使用正则表达式的例子

    正则表达是用来匹配字符串,这篇文章给大家介绍了python正则表达式及正则表达式的例子,文章给大家提到了正则表达式语法规则,感兴趣的朋友一起看看吧
    2018-01-01
  • Python中反射和描述器总结

    Python中反射和描述器总结

    这篇文章主要介绍了Python中的反射和描述器一些知识的汇总,非常的详细,有需要的小伙伴可以参考下
    2018-09-09
  • python浪漫表白源码

    python浪漫表白源码

    今天你表白了吗? 这篇文章主要为大家分享了python浪漫表白源码 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 20个Python中正则表达式的应用与技巧小结

    20个Python中正则表达式的应用与技巧小结

    正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,本文我们将探讨 Python 中 re 模块的应用和一些技巧,希望可以帮助您更好地理解和利用正则表达式
    2024-04-04
  • Python标准库之日期、时间和日历模块

    Python标准库之日期、时间和日历模块

    这篇文章介绍了Python标准库之日期、时间和日历模块,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • BeautifulSoup获取指定class样式的div的实现

    BeautifulSoup获取指定class样式的div的实现

    这篇文章主要介绍了BeautifulSoup获取指定class样式的div的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python自动生产表情包

    Python自动生产表情包

    本文主要介绍了使用Python进行简单图像处理的方法以及Python自动生产表情包的实例,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03

最新评论