其他分享
首页 > 其他分享> > 在Pydev中设置交互式会话的最大RAM使用率

在Pydev中设置交互式会话的最大RAM使用率

作者:互联网

有没有一种方法可以设置交互式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