есть нейронная сеть, она является чат-ботом.
с сайта отправляется ajax-запрос на php, он через shell_exec
запускает питон и получает от него ответ, который после отправляет клиенту. проблема в том что всё это работает очень долго, но самое узкое место в самом питоне.
замеряю время этой функцией:
start_time = time.clock() #начали считать
#код
q = time.clock() - start_time #закончики считать
return_(q) #функция ответа и завершения
в целом код отрабатывает быстро, в среднем 0.0001 сек. (без загрузки модели), но как только я возвращаю загрузку модели (model = load_model( mycfg.path + 'my_model.h5')
), то время выполнения в среднем становится 1.18 сек., при этом сама модель имеет размер 67кб.
для чата такая скорость непозволительна, особенно учитывая потерю времени на прослойку в виде php, каким образом оптимизировать этот момент? может можно запустить сеть в фоновом режиме и работать с процессом, а не грузить каждый раз всё для работы с сетью?
Вы уже сами ответили на свой вопрос - можно запустить сеть и работать с загруженными данными, модулями и т.п. Я бы воспользовался Flask, делаем простое серверное приложение, которое по урлу ждет фразу пользователя, при получении фразы отдает ее на обработку нейросети и возвращает ответ.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/get_phrase/<ph>')
def get_phrase(ph):
ans = some_do(ph)
return jsonify({'answer': ans})
def some_do(ph):
# work
return result
В дополонению ответа про сервер вы можете попытаться взаимодействовать через 'std*' Например: (сторона питона):
model = init_model()
while True:
print(model.get_output(input()))
(сторона php)
1. инициализация процесса
2. отправить ему текст
3. получить его выход
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Нужно самое простое решение php или js
Как сделать так, чтобы если счет у пользователя был меньше нуля после покупки, то покупка отменяется? Ps есть наработка самого цикла
Хочу поинтересоваться, во всех примерах реализации сокетов, показывается как реализовать элементарный чатНа то это и пример, конечно, вопрос...