Есть ли способ запустить модель Python в фоновом режиме? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть проект веб-приложения, использующий Java в качестве базового кода.
Затем необходимо использовать одну из моделей Python, которая была обучена делать некоторые прогнозы.
Я могу загрузить полный сценарий Python и запускать его при необходимости, но проблема заключается во времени загрузки.

Каждый раз, когда вызывается скрипт Python, ему нужно будет перезагрузить весь скрипт, включая модель, перед выполнением прогноза.
Скажем, весь скрипт, когда do fre sh run, занимает 30 секунд
Итак, когда я делаю 4 прогноза через веб-приложение, + - занимает 4 x 30 с = 120 с. Или самый быстрый, если за 1 прогон для выполнения 4 прогнозов все вместе, будет + - 40 с
Не говоря уже о том, когда страница перезагружается, ей нужно будет сделать еще одну частоту sh начало
Что время ожидания слишком велико ждать.

Итак, я думаю, есть ли у меня способ загрузить модель только один раз в самый первый раз, тогда все остальное будет просто вызывать функцию прогнозирования?
Может быть, например, кешировать Python модель в фоновом режиме, а затем использовать модель (переменную) в следующем прогоне?

1 Ответ

0 голосов
/ 27 мая 2020

Чтобы инициализировать модель загрузки только один раз, вам необходимо использовать шаблон проектирования singleton в java. После инициализации класса модели создается экземпляр. Вы можете использовать этот экземпляр всякий раз, когда это необходимо.

public class LoadSingletonModel {

    private static LoadSingletonModel instance;

    private LoadSingletonModel(){}

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

}

Это решит вашу проблему.

...