当 Chrome 正常运行时,它会在我的 connect-four 浏览器游戏中间终止该页面。该游戏是玩家对计算机设置,游戏本身运行正常且永不崩溃。当我将迭代次数设置得太高而无法训练计算机对手时,页面崩溃了。这些程序使用 qLearning 算法训练 ai,它自己播放并为每个遇到的状态存储一个值。如果我将迭代次数设置为大约 125,000 或更少,那么一切正常(除了对手不是那么好)。我不知道是循环的运行时间(大约需要 30 分钟才能运行)杀死程序还是其他原因,例如记录状态的内存限制及其相应的 q 值。
如何在 chrome 不终止页面的情况下让程序运行更多的训练迭代?
最佳答案
关于如何处理您的代码,您有几个选择。
选项 1:setInterval
/setTimeout
正如其他人所建议的那样,使用 setInterval
或 setTimeout
可以“分块”运行您的代码,并且任何分块都不会导致超时。
选项 2:setInterval
+ generators
对于深度嵌套的代码,使用 setTimeout 很难正确地重新输入代码。
继续阅读 generators -- 这使得分块运行代码变得更好,但可能需要重新设计。
选项 3:网络 worker
Webworkers提供另一种方式,这取决于你在计算什么。它们在后台运行,无法访问 DOM 或其他任何东西,但它们非常擅长计算。
选项 4:nodejs
您最后的选择是离开浏览器并在另一个环境中运行,例如 node.JS .如果您在 Windows 下运行,HTA 文件可能是另一种选择。
关于Javascript - 防止 Chrome 在长循环期间终止页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37975869/