我试图将 Python 程序的 RAM 使用量限制为一半,这样当使用所有 RAM 时它就不会完全冻结,为此我使用了以下代码,该代码不起作用,并且我的笔记本电脑仍然冻结:
import sys
import resource
def memory_limit():
rsrc = resource.RLIMIT_DATA
soft, hard = resource.getrlimit(rsrc)
soft /= 2
resource.setrlimit(rsrc, (soft, hard))
if __name__ == '__main__':
memory_limit() # Limitates maximun memory usage to half
try:
main()
except MemoryError:
sys.stderr.write('MAXIMUM MEMORY EXCEEDED')
sys.exit(-1)
我正在使用我从以下位置调用的其他函数main
功能。
我究竟做错了什么?
提前致谢。
PD:我已经搜索过这个并找到了我放置的代码,但它仍然无法正常工作......
我做了一些研究,发现了一个从 Linux 系统获取内存的函数:在 Python 中确定可用 RAM https://stackoverflow.com/questions/17718449/determine-free-ram-in-python我对其进行了一些修改,将内存硬限制设置为可用可用内存的一半。
import resource
import sys
def memory_limit():
"""Limit max memory usage to half."""
soft, hard = resource.getrlimit(resource.RLIMIT_AS)
# Convert KiB to bytes, and divide in two to half
resource.setrlimit(resource.RLIMIT_AS, (get_memory() * 1024 / 2, hard))
def get_memory():
with open('/proc/meminfo', 'r') as mem:
free_memory = 0
for i in mem:
sline = i.split()
if str(sline[0]) in ('MemFree:', 'Buffers:', 'Cached:'):
free_memory += int(sline[1])
return free_memory # KiB
if __name__ == '__main__':
memory_limit_half()
try:
main()
except MemoryError:
sys.stderr.write('\n\nERROR: Memory Exception\n')
sys.exit(1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)