有没有一种方法可以设置交互式PyDev会话中允许的最大RAM使用量?如果我不小心输入了导致RAM使用量激增的命令,我的计算机就会挂起.
解决方法:
在Unix上,您可以使用resource.setrlimit限制该进程可用的资源(例如内存).例如,将地址空间的最大区域限制为10 ** 6字节:
import sys
import resource
resource.setrlimit(resource.RLIMIT_AS, (10 ** 6, 10 ** 6))
memory_hog = {}
try:
for x in range(10000):
memory_hog[str(x)] = 'The sky is so blue'
except MemoryError as err:
sys.exit('memory exceeded')
# memory exceeded
调用resource.setrlimit会引发MemoryError,因为memory_hog占用太多空间.在没有调用resource.setrlimit的情况下,程序应正常完成(在典型硬件上).
您还可以通过以下方法限制可用的总CPU时间:
resource.setrlimit(resource.RLIMIT_CPU, (n, n))
其中n以秒为单位.例如,
In [1]: import math
In [2]: x = math.factorial(40000)
In [3]: import resource
In [4]: resource.setrlimit(resource.RLIMIT_CPU, (2, 2))
In [5]: x = math.factorial(40000)
Process Python killed
由于无法计算40000,该进程被杀死!在2秒内.
请注意,这两个命令都影响整个PyDev会话,而不仅仅是一个命令.
标签:pandas,pydev,python,numpy 来源: https://codeday.me/bug/20191121/2050705.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。