Как мне создать интерфейс командной строки, который сохраняется как фоновый процесс и выполняет команды только при вводе указанных c команд? Обратите внимание, что в основном это псевдокод:
def startup():
# costly startup that loads objects into memory once in a background process
def tear_down()
# shut down; generally not needed, as main is acting like a service
def main():
startup()
# pseudo code that checks shell input for a match; after execution releases back to shell
while True:
usr_in = get_current_bash_command()
if usr_in == "option a":
# blocking action that release control back to shell when complete
if usr_in == "option b":
# something else with handling like option a
if usr_in == "quit":
# shuts down background process; will not be used frequently
tear_down()
break
print("service has been shut down. Bye!")
if __name__ == "__main__":
# run non-blocking in background, only executing code if usr_in matches commands:
main()
Обратите внимание, что это не так:
- типичный пример argparse или click, который запускает (блокирует) python процесс пока все команды не будут выполнены
- серия одноразовых сценариев для каждой команды; они используют объекты в памяти, созданные в фоновом процессе с помощью startup ()
- совершенно другой оболочки, такой как ipython; Я хотел бы интегрировать это со стандартной оболочкой, например, bash.
Я знаком с click , argparse , подпроцесс , et c., И, насколько я могу судить, они принимают одну команду и блокируют до завершения. Я специально ищу что-то, что взаимодействует с фоновым процессом, чтобы дорогой запуск (загрузка объектов в память) обрабатывался только один раз. Я просмотрел пакеты python daemon и service , но я не уверен, что они также являются подходящим инструментом для работы.
Как я могу сообщник sh это? Мне кажется, что я не знаю, что гуглить, чтобы получить нужный мне ответ ...