在 Nodejs 中预加载 python 个库
Pre-load python libraries in Nodejs
我有一个带有 JavaScript 前端和 python 后端的网络应用程序。用户写一个短语,点击一个按钮,python 解析句子(自然语言处理)并将数据发送回客户端。我使用 SpaCy 进行自然语言处理。 SpaCy 需要很长时间才能加载,所以我想知道我是否可以在启动服务器时在 NodeJS 中预加载 SpaCy(相对于每次生成 python 文件时导入 SpaCy - 这就是我现在所做的,请参见下面的代码)。
谢谢!
JavaScript代码:
io.on('connection', (socket) => {
socket.on('run_command_request', async (data) => {
let output_str = await run_python_command(data);
socket.emit('run_command_complete');
});
});
async function run_python_command(data) {
var spawn = require('child_process').spawn;
var py = spawn(python_executable, ['./run_command.py']); //PYTHON FILE CALLED EVERY TIME A USER CLICKS A BUTTON
var python_output_string ='';
py.stdin.write(JSON.stringify(data));
py.stdin.end();
return new Promise((res, rej) => {
py.stdout.on('end', function() {
res(python_output_string);
});
});
}
Python代码:
import spacy ############# THIS STEP TAKES FOREVER #############
nlp = spacy.load("en_core_web_sm")
doc = nlp(tc)
verb = [token.lemma_ for token in doc if token.pos_ == "VERB"]
print(verb)
您可以将您的 python 程序变成服务器。您的 nodejs 程序可以在启动时启动它一次。然后,您不必每次都生成,只需向它发送一个带有 JSON 数据的请求并等待其响应。
为简单起见,您甚至可以将 python 程序设为一个 http 服务器(在已知的本地非公开路由端口上),并且您可以随时向它发送一个 http 请求 运行 对短语的自然语言解析。
将 python 程序更像是一种 运行ning 服务,可以随时处理请求。这样您只需支付一次启动费用。
我有一个带有 JavaScript 前端和 python 后端的网络应用程序。用户写一个短语,点击一个按钮,python 解析句子(自然语言处理)并将数据发送回客户端。我使用 SpaCy 进行自然语言处理。 SpaCy 需要很长时间才能加载,所以我想知道我是否可以在启动服务器时在 NodeJS 中预加载 SpaCy(相对于每次生成 python 文件时导入 SpaCy - 这就是我现在所做的,请参见下面的代码)。 谢谢!
JavaScript代码:
io.on('connection', (socket) => {
socket.on('run_command_request', async (data) => {
let output_str = await run_python_command(data);
socket.emit('run_command_complete');
});
});
async function run_python_command(data) {
var spawn = require('child_process').spawn;
var py = spawn(python_executable, ['./run_command.py']); //PYTHON FILE CALLED EVERY TIME A USER CLICKS A BUTTON
var python_output_string ='';
py.stdin.write(JSON.stringify(data));
py.stdin.end();
return new Promise((res, rej) => {
py.stdout.on('end', function() {
res(python_output_string);
});
});
}
Python代码:
import spacy ############# THIS STEP TAKES FOREVER #############
nlp = spacy.load("en_core_web_sm")
doc = nlp(tc)
verb = [token.lemma_ for token in doc if token.pos_ == "VERB"]
print(verb)
您可以将您的 python 程序变成服务器。您的 nodejs 程序可以在启动时启动它一次。然后,您不必每次都生成,只需向它发送一个带有 JSON 数据的请求并等待其响应。
为简单起见,您甚至可以将 python 程序设为一个 http 服务器(在已知的本地非公开路由端口上),并且您可以随时向它发送一个 http 请求 运行 对短语的自然语言解析。
将 python 程序更像是一种 运行ning 服务,可以随时处理请求。这样您只需支付一次启动费用。