Я создаю настольное приложение для моих Python сценариев (без веб-сервера) с использованием Node.JS (Электрон).
Однако на этапе оптимизации у меня возникло следующее требование, что я не могу чтобы найти ответ для:
моего JS кода с использованием python -оболочки, вызывающего мою Python программу с вводом file_name в качестве аргумента, полученного через пользовательский интерфейс. Мой сценарий Python после получения аргумента выполняет db = pd.read_csv(file_name)
Это большой файл данных и занимает большую часть общего времени сценария.
После считывания файла в переменную db сценарий выполняет некоторые вычисления и генерирует отчет позже сохранен как файл CSV. db.to_csv(output_file)
Python сценарий затем завершается, и вывод печати выводится на экран в моем приложении gui и переменная db исчезает.
Теперь мой вопрос заключается в том, хочу ли я сгенерировать другой отчет о том, как могу ли я сэкономить время перезагрузки файла csv в мою переменную db.
- Возможно ли, что переменная python db будет сохранена где-то для более быстрого поиска (например, localalstorage в JS) или,
- Моя python программа не завершается.
Я уверен, что существует какой-то межпроцессный механизм, о котором я не знаю, поскольку я новичок в этой области.
Некоторая часть кода моего приложения показана ниже для пояснения:
JS Сценарий:
// Some Code...
//Options for python-shell
var options = {
// mode:'json',
scriptPath: path.join(__dirname,'engine/'),
pythonPath:'my local python installation path',
args:[input_file]
}
// Create an instance of python shell
var cg = new PythonShell('cg.py',options);
//handling events from python script cg.py
cg.on('message',function(message){
// console.log(message)
swal(message);
// pyData = message
})
// ...code
Python Сценарий
import sys # used for electron js interaction
import pandas as pd
// ....code
file1 = sys.argv[1]
db = pd.read_csv(file1) // Reading into db as a dataframe
// Rest of My code doing some process on db dataframe....
// Finally Storing result as output csv file
db.to_csv('output.csv')
sys.stdout.flush()