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


Posted in Python onAugust 04, 2020

问题

你想对在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批量修改文件后缀示例代码分享
Dec 24 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
Python爬取三国演义的实现方法
Sep 12 Python
python 判断是否为正小数和正整数的实例
Jul 23 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
python手写均值滤波
Feb 19 Python
Python3 pywin32模块安装的详细步骤
May 26 Python
Python无损压缩图片的示例代码
Aug 06 Python
python实现自动打卡的示例代码
Oct 10 Python
Python序列化与反序列化相关知识总结
Jun 08 Python
Python如何将将模块分割成多个文件
Aug 04 #Python
Python 保存加载mat格式文件的示例代码
Aug 04 #Python
python中判断文件结束符的具体方法
Aug 04 #Python
python字典key不能是可以是啥类型
Aug 04 #Python
Python延迟绑定问题原理及解决方案
Aug 04 #Python
Python 使用生成器代替线程的方法
Aug 04 #Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 #Python
You might like
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
Vue中使用sass实现换肤功能
2018/09/07 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python脚本处理空格的方法
2016/08/08 Python
Python实现文件内容批量追加的方法示例
2017/08/29 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
个人简历自我评价范文
2014/02/04 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
贫困证明书范文
2015/06/16 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书