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

时间:2014-09-07 09:52:50

标签: python numpy pandas pydev

有没有办法在交互式PyDev会话中设置允许的最大RAM使用率?如果我意外地输入导致RAM使用膨胀的命令,我的计算机往往会挂起。

1 个答案:

答案 0 :(得分:3)

在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.setrlimitMemoryError被提出,因为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

该进程被杀死,因为它无法在2秒内计算40000!


请注意,这两个命令都会影响整个PyDev会话,而不仅仅是一个命令。