我试图将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,然后我对其进行了一些修改,以获取可用内存并将最大可用内存设置为一半。
码:
def memory_limit():
soft, hard = resource.getrlimit(resource.RLIMIT_AS)
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
if __name__ == '__main__':
memory_limit() # Limitates maximun memory usage to half
try:
main()
except MemoryError:
sys.stderr.write('\n\nERROR: Memory Exception\n')
sys.exit(1)
将其设置为半该生产线是resource.setrlimit(resource.RLIMIT_AS, (get_memory() * 1024 / 2, hard))
在那里get_memory() * 1024 / 2
设置它的一半(它以字节为单位)。
希望这可以在将来帮助其他人!=)
在堆中,我们可以使用-Xms-Xmx来限制ram的使用。 在jvm堆之外,当使用NIO时,我们可以使用-XX: MaxDirectMemorysize。 但在这样的节目中 } 使用jvm选项 -Xms256m-Xmx256m-XX: MaxDirectMemorysize=128m 它运行良好。它不会发生错误。 -XX:MaxDirectMemorySize不工作? Java1.8OS:cento
问题内容: 我有一个LAMP设置,我只想能够保护网页上的内容(图像,css,视频等),以便只有登录的用户才能访问它。 我知道我可以使用.htaccess轻松地做到这一点。但是,我不想使用身份验证弹出窗口,并且希望能够使用会话并能够注销。 我正在使用php来完成mysql身份验证和创建会话的工作。这很好。但是图像,CSS,JavaScript等仍然可以访问。 仅当存在有效的php会话时,如何才能允许
问题内容: 据我所知,每部Android手机都将所有应用程序的最大内存使用量限制为16、24或32Mb。我刚刚看到人们在讨论应用程序Dungeon Defenders,该应用程序似乎使用了256 Mb的RAM。 应用说明:“最低要求:512 MB RAM(运行时256个可用空间)” http://www.appbrain.com/app/dungeon- defenders%3A-first-wa
我有一个程序,把10个线程推到一个向量中,每个线程在完成之前要打印出一个字符5次(第一个线程是'a',第二个线程是'B',等等)。我可以让它们一次全部运行(使用detach())或者一次运行一个(使用join())。现在我想使用互斥体将一次允许打印的线程数限制为2。我已经能够声明互斥体并将锁放在适当的位置,但我不确定如何应用这样的限制。有人对如何继续有什么想法吗?
问题内容: 我对的能力了解得越多,我就越惊讶于它的作用。这是根据我对问题的回答(使用反射更改静态最终用于单元测试)改编而成的。 你可以做真正令人发指的事情: 大概是API设计者意识到了可滥用性,但是必须承认它具有合法的用途来提供它。所以我的问题是: 真正合法的用途是什么? Java是否可以被设计为一开始就没有这种需求? 这种设计的负面后果(如果有)是什么? 你只能限制合法使用吗? 只有通过吗? 它
问题内容: 我如何从elasticsearch中获取所有结果,因为结果仅显示限制为10。我有一个查询,像: 我已将限制设置为15,但我不想使其无限,以便我可以获取所有数据,因为我的数据不断变化,并且我想获取所有数据,所以我无法设置限制。 问题答案: 您可以使用和参数浏览所有数据。这可能非常慢,具体取决于您的数据以及索引中有多少。 http://www.elastic.co/guide/zh-CN/