Как управлять запущенным процессом Python? Если ли что-то типа API у работающих процессов?
Всех приветствую. Суть такова, есть скрипт на Python, довольно тяжелый, запускается более 2х секунд, занимает более 500 мб RAM. Он открывает браузер в фоне и делает много других вещей, поэтому так медленно, но не суть.
И чтобы не запускать его каждый раз и не ждать, пока он загрузится и будет готов к работе, я держу его запущенным постоянно, а задания ему скармливаю через файловую систему, то есть если происходят изменения в определенной папке, то он обрабатывает задание и дальше висит в памяти.
Но эту систему я изобрел сам, и предполагаю, что есть какой-то более надежный и быстрый способ общения с запущенным скриптом (получается это по-сути демон на Python).
Если есть такой механизм, подскажите пожалуйста убогому, как он называется и что гуглить хотя бы. Заранее спасибо за уделенное время. Можно также и на PHP тоже самое, если там вдруг есть подходящее решение.
Я далеко не гуру, но мне любопытно: вот вы описали, как оно работает и управляется. Но не сказали, как именно вы хотите, чтоб оно управлялось. У вас должно быть десктопное приложение, с кнопками пуск/стоп и каким-то механизмом формирования задачи, или как вы себе это видите? Веб-интерфейс? Просто две кнопки на клавиатуре, прикрученные к вашей проге?
Вот например, если десктопное приложение, то тут всплывет например PyQT со слотами/сигналами, возможно потянет за собой многопоточность и прочие заморочки.
spoiler
(Я сходу туда, в pyqt сунулся, понял, что если хочется чего-то внятного, то надо сначала python понять нормально, и купил учебник... но я чайник... кстати, спасибо за идею насчёт держать приложение в запущенном состоянии - у меня тоже есть такая поделка, тоже попробую ее переделать в такой режим)
В любом языке программирования должны поддерживаться вышеупомянутые вещи. Вы поступайте так, как вам удобнее.
Я бы проверил возможность работы с сигналами, try/catch для пользовательских сигналов в PHP естественно есть.
Опять же вопрос платформы.
Спасибо. А что из этого не для PyQT? Просто у меня не десктопный скрипт, а скрипт командной строки. Сигналы, насколько я понял, это чисто для графических приложений на Python.
Jo Jo, Сигналы - это основополагающий компонент управления программами :) Например, убивая процесс командой kill, я посылаю ему сигнал SIGKILL. Или например, в программе ты форкнулся и чтобы отследить завершение процесса-потомка, перехватываешь SIGCHILD. Но сигнал - это "семафорный" элемент, он несет только информацию о начале/окончании некоего события, для полноценного обмена я вот (когда-то подобное писал) использовал shared memory - не знаю правда, как это на питоне.
Дополню. Есть этот большой скрипт, который постоянно работает и находится "на подхвате", а есть более мелкие, с которыми взаимодействует пользователь (данные с формы). И задача в том, чтобы передавать данные от пользователя в запущенный 'тяжелый' процесс.