簡體   English   中英

在Servlet中使用renjin

[英]Use renjin in a servlet

我已經在R中訓練了一個模型,並想使用renjin在servlet中計算預測。 這些預測始終使用相同的唯一模型。

為了避免花費資源實例化renjin並為每個請求加載相同的模型,我考慮在服務容器啟動時(在ServletContextListener中)實例化renjin並在單例對象中加載一次模型。

我的問題是:這樣繼續進行是否線程安全?當同時執行多個預測請求(使用在相同實例中加載的相同模型)時,如何與renjin一起使用? 正確的做法是什么:是否應在renjin實例上使用鎖以使其線程安全? 還是創建一個線程池?

不應使用單個Renjin Session來同時評估多個腳本。

但是,您可以維護Renjin ScriptEngine對象池,也可以使用ThreadLocal僅為每個線程維護一個,就像我對RenjinServlet示例所做的那樣

如果您不希望並發請求很高,則同步訪問單個ScriptEngine實例也將起作用。

數據可以共享Session,但是,如果內存不足,則可以先從類路徑或WEB-INF加載模型,然后與每個ScriptEngine實例共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM