Сохранение модуля python в памяти

#python #persistence #nltk

#python #сохранение #nltk

Вопрос:

Я использую инструментарий естественного языка для python, и в нем есть полезная функция, называемая pos_tag. Вы можете запустить nltk.pos_tag() для любого списка слов, которые были помечены из предложения, и он вернет список кортежей с каждым словом в предложении и его частью речи (POS).

Что ж, это здорово, но мне нужно запускать это каждый раз, когда кто-то запускает вызов AJAX на моем веб-сайте. К сожалению, функция имеет много начальных накладных расходов и занимает около 10 секунд, чтобы сделать все, что ей нужно для работы. Как только это произойдет, я могу вызвать nltk.pos_tag(), и он будет работать очень быстро. Но каждый раз, когда я выполняю вызов AJAX, он должен снова загружать функцию.

Итак, мне было интересно, есть ли способ сделать это постоянным, чтобы мне не приходилось загружать его каждый раз, когда кто-то заходит на мою страницу или обновляет ее с помощью вызова AJAX. Я пробовал мариновать, и это не сработало. Я посмотрел на shelve, но, похоже, он похож на pickle. Надеюсь, кто-нибудь может помочь.

Спасибо.

Комментарии:

1. Какой веб-сервер? Как с Python разговаривают?

Ответ №1:

Я считаю, что наиболее эффективный и быстрый способ добиться этого — иметь отдельный сервер или процесс, который получает текст и отвечает результатами функции post_tag() или любой другой функции, которую вы хотите.

Комментарии:

1. Я делал подобные вещи между серверами с помощью XMLRPC, но мне нужно было бы запустить процесс только на том же сервере. Является ли XMLRPC излишним для этого? Что бы вы порекомендовали?

2. Для связи с процессом / «сервером» на том же сервере, да, это как-то излишне. Здесь возможны следующие варианты: межпроцессное взаимодействие и разделяемая память, и это лишь некоторые из них.. Конечно, если у вас есть решение, готовое к XMLRPC, вы все равно можете развернуть его локально, а затем протестировать и сравнить поведение…