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中break语句的用法
May 14 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
Django之模型层多表操作的实现
Jan 08 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
Python + Flask 实现简单的验证码系统
Oct 01 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
pandas 强制类型转换 df.astype实例
Apr 09 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
django前端页面下拉选择框默认值设置方式
Aug 09 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字符串截取问题
2006/11/28 PHP
php检测文本的编码
2015/07/26 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python中%r和%s的详解及区别
2017/03/16 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
python实现多人聊天室
2020/03/31 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python实现从ftp服务器下载文件
2020/03/03 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
美国第一香水网站:Perfume.com
2017/01/23 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
连锁经营管理专业大学生求职信
2013/10/30 职场文书
精彩的推荐信范文
2013/11/26 职场文书
工作自我评价怎么写
2014/01/29 职场文书
设计师求职信模板
2014/05/06 职场文书
董事长开业致辞
2015/07/29 职场文书
送给客户微信问候语!
2019/07/04 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js