2016-04-22 5 views
0

Rでモデルを訓練し、renjinを使用してサーブレットで予測を計算したいとします。予測は常に同じユニークなモデルを使用しています。サーブレットでrenjinを使用

レンジをインスタンス化し、要求ごとに同じモデルをロードするのを避けるため、servletコンテナが(ServletContextListener内で)開始されると、rentenをインスタンス化してモデルを一度ロードすることを検討しています。

私の質問は次のとおりです。同じケースで複数の予測要求が同時に実行されたとき(同じインスタンスでロードされた同じモデルを使用して)、レンジとはどのように動作しますか?これを行う正しい方法は何ですか:スレッドを安全に保つためにレンジインスタンスにロックを使用する必要がありますか?代わりにスレッドのプールを作成しますか?

答えて

0

複数のスクリプトを同時に評価するために、単一のRenjinセッションを使用しないでください。

ただし、RenjinServletの例のように、Renjin ScriptEngineオブジェクトのプールを維持するか、ThreadLocalを使用してスレッドごとに1つだけ維持することができます。

同時アクセスのレベルが高いと思わない場合は、単一のScriptEngineインスタンスへのアクセスを同期することもできます。

データはしかし、セッションを共有することができるので、メモリが問題であるならば、あなたは は、最初のクラスパスまたはWEB-INFからモデルをロードし、その後ScriptEngineインスタンスのそれぞれと共有することができます。

関連する問題