2016-06-22 10 views
1

Chromeは、接続4ブラウザゲームが正常に実行されている最中にページを強制終了します。ゲームはプレーヤー対コンピュータのセットアップであり、ゲーム自体は正常に動作し、決してクラッシュしません。反復回数をコンピュータの相手を訓練するには高すぎると設定すると、ページがクラッシュする。プログラムは、それ自身を再生し、遭遇した各状態の値を格納するqLearningアルゴリズムを使用してaiを訓練する。反復回数を約125,000以下に設定すると、すべてがうまくいきます(相手がそれほど大きくないことを除いて)。私は、プログラムを殺すループの実行時間(実行に約30分かかります)や、記録状態やそれに対応するq値のメモリ制約など何かを判断することはできません。Javascript - 長いループ中にChromeを強制終了ページから保護する

Chromeを使わずにプログラムを繰り返し実行すると、プログラムを実行する方法を教えてください。

+0

'setInterval'を試しましたか? – Dimava

+0

[ウィンドウsetInterval()メソッド](http://www.w3schools.com/jsref/met_win_setinterval.asp) – Dimava

答えて

2

コードの処理方法にはいくつかのオプションがあります。

オプション1:「チャンク」でコードを実行することができますし、誰チャンクがタイムアウトを起こしませんsetIntervalまたはsetTimeoutを使用して他の人が提案してきたようにsetInterval/setTimeout

、。

オプション2:のsetTimeoutを使用して、深くネストされたコードでsetInterval + generators

は、適切にコードを再入力することは非常に困難です。

読んでくださいgenerators - それはチャンクではるかに良いコードを実行しますが、若干の再設計が必要な場合があります。

オプション3:webworkers

Webworkersはあなたが計算されているものに応じて、別の方法を提供します。それらはバックグラウンドで実行され、DOMやその他のものにアクセスすることはできませんが、計算では大変です。

オプション4:nodejs

あなたの最後のオプションは、離れて、ブラウザからの移動や、node.JSなど別の環境で実行することです。 Windowsで実行している場合は、HTAファイルが別のオプションである可能性があります。

+0

私は出発点が間違いなく1)計算にはUI関連ではないので、必ずしもWebワーカーでなければならないと言います。 2)メソッドが0.5-1秒以上かかるので、2番目の理由でUIスレッド上にあってはいけません。 3)私はクロムが計算を殺していると想像しています。なぜなら、それは重い制限があるメインスレッド上にあるからです。バックグラウンドスレッド上にあれば、クロムはより寛大になります。 –

関連する問題