gpt4 book ai didi

memory - 限制 Mathematica 内存使用的正确方法?

转载 作者:IT王子 更新时间:2023-10-28 23:29:32 29 4
gpt4 key购买 nike

在 32 位操作系统下,分配给任何程序的最大内存是有限的,Mathematica 会优雅地终止内核并返回最大内存分配错误。

然而,在 64 位操作系统上,Mathematica 将自由使用所有可用内存并使系统停止运行。因此,限制内存使用的正确方法是什么?可以将 MemoryConstrained$PreCellEvaluationFunction 结合使用,但我宁愿不为此绑定(bind)其中任何一个,或者必须修改现有的用于合并此功能。

是否有其他方法可以全局限制内存使用,例如内核标志或系统 $Option?

最佳答案

Mathematica 8 中,您可以启动内存看门狗,类似于:

maxMemAllowed        = 15449604;
intervalBetweenTests = 1; (*seconds*)
iAmAliveSignal = 0;
Dynamic[iAmAliveSignal]
RunScheduledTask[
If[MemoryInUse[] > maxMemAllowed , Quit[], iAmAliveSignal++],
intervalBetweenTests];

记得跑

RemoveScheduledTask[ScheduledTasks[]];

禁用它。

编辑

您可以在退出前提醒或以交互方式决定要做什么。根据要求,这是一个分配了 1.3GB 的试用版。在这台机器上我不能走得更远。

maxMemAllowed = 1.3 1024^3; (*1.3 GB*)
intervalBetweenTests = 1; (*Seconds*)
iAmAliveSignal = 0;
leyendToPrint = "";
Dynamic[leyendToPrint]
RunScheduledTask[
If[MemoryInUse[] > maxMemAllowed,
CreateDialog[CancelButton["Max Mem Reached", DialogReturn[]]];
Quit[],
Print["Memory in use: ", MemoryInUse[]];
leyendToPrint =
"Seconds elapsed = " <> ToString[iAmAliveSignal++]],
intervalBetweenTests];
IntegerPartitions[320, {15}];

enter image description here

关于memory - 限制 Mathematica 内存使用的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854980/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com