在 linux bash 上,有一个功能ulimit
可以限制任何正在运行的进程的内存。将此添加到您的程序中,并将print num
其作为 primes_list 函数的第一行
try:
primes_list(10)
primes_list(100)
primes_list(1000)
primes_list(10000)
primes_list(100000)
primes_list(1000000)
primes_list(10000000)
primes_list(100000000)
except MemoryError:
print "out of memory"
然后您应该能够看到以下功能在 shell 中工作。请注意,我启动了一个新的 bash shell。结束 shell 将使 ulimit 设置恢复正常。当然可以编写脚本。在此示例中,我将虚拟内存大小限制为 100MB
$ bash
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63064
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 63064
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
$ ulimit -v 100000
$ python foo.py
10
100
1000
10000
100000
1000000
10000000
out of memory