java - 有什么办法可以在后台运行Python模型吗?

标签 java python spring jython python-multithreading

我有一个使用 Java 作为基本代码的 Web 应用程序项目。
然后需要使用一个经过训练的Python模型来做一些预测。
我能够加载完整的 Python 脚本并在需要时运行它,但问题是加载时间。

每当调用 Python 脚本时,在进行预测之前都需要重新加载整个脚本,包括模型。
比如说,重新运行时整个脚本将花费 30 秒
因此,当我通过网络应用程序进行 4 次预测时,将占用 4 x 30 秒 = 120 秒。或者如果在 1 次运行中总共进行 4 次预测,最快将是 +- 40 秒
更不用说当页面重新加载时,它还需要重新开始
其中等待时间太长,无法等待。

所以,我在想有没有办法让我第一次只加载一次模型,然后剩下的就只是调用预测函数了?
也许就像在后台缓存 Python 模型然后在下次运行中使用该模型(变量)?

最佳答案

要只初始化一次加载模型,需要在java中使用单例设计模式。一旦模型类初始化,实例就被创建。您可以在需要时使用此实例。

public class LoadSingletonModel {

    private static LoadSingletonModel instance;

    private LoadSingletonModel(){}

    public static synchronized LoadSingletonModel getInstance(){
        if(instance == null){
            instance = new LoadSingletonModel();
        }
        return instance;
    }

}

这将解决您的问题。

关于java - 有什么办法可以在后台运行Python模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62035258/

相关文章:

java - @在没有 Controller 的情况下使用 jackson 创建对象时有效

spring - 在 yaml 中将 debug 设置为 true 而不是 @EnableWebSecurity(debug = true)

java - 向 SQL 表添加用户定义的约束

python - Django 中的关系字段

java - 如何在 Spring+JSF 应用程序中使用 JSF 注解

python - 带有 PyDev Eclipse 的 GUI IDE

python - 没有设置密码。 django 保存没有表单的用户

java - long 中非零四进制(基数为 4)的位数?

java - 谁能解释一下什么是状态和可变数据?

java - Java 中的快速排序未正确排序