python限制进程、子进程占用内存大小、CPU时间的方法:resource模块
内置模块:resource
在mac环境下功能会存在问题。linux下可以使用:但是for i in range(10000)的值必须是10000或者更大的数值才有用。没有搞清楚为什么
#/usr/bin/env python
#-*-coding:utf--*-
import resource
#soft,hard=resource.getrlimit(resource.RLIMIT_STACK)
#resource.setrlimit(resource.RLIMIT_STACK,(,hard))
#soft,hard=resource.getrlimit(resource.RLIMIT_DATA)
#resource.setrlimit(resource.RLIMIT_DATA,(0.002,hard))
soft,hard=resource.getrlimit(resource.RLIMIT_AS)
resource.setrlimit(resource.RLIMIT_AS,(,hard)) # 理解上,值1表示1字节,程序随便赋个值,内存就会不够用,其实不是这么回事,需要下面循环10000次才有效果
aia=
b='sdfdf似懂非懂辅导辅导'
for i in range():
a='str'
a=a+str(i)
print a
a=b
print a
效果:MemoryError

要限制内存使用,设置可使用的总内存值即可,如下:
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上却不能。
主要函数:
resource.getrlimit(resource) 获取资源的大小限制resource.setrlimit(resource, limits) 设置资源的大小限制,limits必须是格式(soft,hard),soft/hard都必须为整数resource.prlimit(pid, resource[, limits])resource.getrusage(who) 获取进程或者线程占用的资源情况resource.getpagesize()
resource值可以为:resource.RLIMIT_CORE、resource.RLIM_INFINITY、resource.RLIMIT_CPU、resource.RLIMIT_FSIZE……
who的值可以为:resource.RUSAGE_SELF进程自身、resource.RUSAGE_CHILDREN子进程、resource.RUSAGE_BOTH、resource.RUSAGE_THREAD当前线程
Python 内存管理的另一个有趣话题是它的“垃圾回收”机制。它以“引用计数” 为主,并借助“标记-清除”机制消除循环引用带来的影响。为了加速对象的创建,Python 又引入 “分代回收”机制,它缓存部分反复创建和销除的对象,而非在它们释放后直接从内存删除它们, 从而加速下次该对象的创建
https://docs.python.org/3.4/library/resource.html
https://python3-cookbook.readthedocs.io/zh_CN/latest/c13/p14_putting_limits_on_memory_and_cpu_usage.html 对应中文:https://www.rddoc.com/doc/Python/3.6.0/zh/library/resource/ 翻译的一般
https://blog.csdn.net/liangyuannao/article/details/9697987 这个例子可以在linux下看出效果
python限制进程、子进程占用内存大小、CPU时间的方法:resource模块的更多相关文章
- Linux/Centos查看进程占用内存大小的几种方法总结
1.命令行输入top回车,然后按下大写M按照memory排序,按下大写P按照CPU排序. 2. ps -ef | grep "进程名" ps -e -o 'pid,comm ...
- 对于进程没杀死占用内存和cpu行为的方法
在跑机器学习或者深度学习的过程中有可能遇到没杀死进程的情况,但是程序的入口又没关掉,尤其是我使用jupyter从远程Linux映射到windows浏览器跑程序的时候 对于上面的问题, 首先运行 hto ...
- 在Linux中通过Top运行进程查找最高内存和CPU使用率
按内存使用情况查找前15个进程,在批处理模式下为"top" 使用top命令查看有关当前状态,系统使用情况的更详细信息:正常运行时间,负载平均值和进程总数. 分类:Linux命令操作 ...
- 查看redis占用内存大小的方法
查看redis占用内存大小的方法 <pre>redis-cli auth 密码info</pre><pre># Memory used_memory:1349009 ...
- ps -ef、ps aux(查看进程占用内存大小)
Linux下ps -ef和ps aux的区别及格式详解 Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux.这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Uni ...
- Android中一张图片加载后所占用内存大小的获取与测试
Android程序中一旦加载的图片比较多,就有可能出现Out of Memory而导致程序崩溃.这个一方面是因为Android系统本身对于每个单独的进程有内存大小的限制(有16M,64M,128M,2 ...
- Linux下查看某一进程所占用内存的方法
Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id,比如 ps -ef | grep kafka 可以看到kafka这个程序的进程id 可以看到是2913,现在可以使用如下命令查 ...
- PHP数组实际占用内存大小的分析
一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G.下面我们可以粗略的估算PHP数组占用内存的大小,首先我们测试1000个元素的整数 ...
- 如何查看redis占用内存大小
redis缓存固然高效,可是它会占用我们系统中宝贵的内存资源,特别是当我们的项目运行了一段时间后,我们需要看一下redis占用了多少内存,那么可以用“info”命令查看. 执行info命令后,找到Me ...
随机推荐
- javascript大神修炼记(6)——OOP思想(继承)
读者朋友们大家好,我们今天这一讲就接着前面的封装继续讲解,今天就是在前面内容上面的升级,OOP思想中的继承,我们就先来解释一下继承到底是什么意思,我们在什么地方会用到继续. 继承就是,后代继续祖先的一 ...
- nginx中配置文件的讲解
一: 1.配置文件的结构 nginx由配置文件中指定的指令控制的模块组成. 指令分为简单指令和块指令. 一个简单的指令由空格分隔的名称和参数组成,并以分号(;)结尾. 块指令具有与简单指令相同的结构, ...
- Python 编程:从入门到实战 读书笔记
1..title() 每个单词首字母大写 .upper() 所有字母大写 .lower() 所有字母小写 2. \t 空白 转义字符只能用在""内 ...
- 机器学习之路: python nltk 文本特征提取
git: https://github.com/linyi0604/MachineLearning 分别使用词袋法和nltk自然预言处理包提供的文本特征提取 from sklearn.feature_ ...
- 【UOJ #221】【NOI 2016】循环之美
http://uoj.ac/problem/221 因为\(a\)和\(b\)不互质时,\(\frac ab=\frac{\frac a{(a,b)}}{\frac b{(a,b)}}\),所以只用求 ...
- AtCoder Grand Contest 019 F-yes or no
AtCoder Grand Contest 019 F-yes or no 解题思路: 考虑一个贪心策略,假设当前还有 \(x\) 道 \(\text{yes}\) 和 \(y\) 道 \(\text ...
- bzoj 3262
题意:给你一些三维上的点,对于每个点,统计三个坐标都小于等于该点的点数. 如果点的范围在300以内,可以用三维树状数组搞,但这题坐标范围太大. 考虑将所有点按照x坐标排序,从左到右,相当于在一个二维平 ...
- VC/MFC分割字符串(SplitString)返回CStringArray
引自:http://bbs.csdn.net/topics/60321228 原版: CStringArray* SplitString(CString string, char pattern) { ...
- python开发_xml.dom_解析XML文档_完整版_博主推荐
在阅读之前,你需要了解一些xml.dom的一些理论知识,在这里你可以对xml.dom有一定的了解,如果你阅读完之后. 下面是我做的demo 运行效果: 解析的XML文件位置:c:\\test\\hon ...
- Codeforces Round #297 (Div. 2)C. Ilya and Sticks 贪心
Codeforces Round #297 (Div. 2)C. Ilya and Sticks Time Limit: 2 Sec Memory Limit: 256 MBSubmit: xxx ...