Есть приложение на питоне (цепляющее всякие .so-модули на С-ях и пр). Приложение работает в рамках одного хоста, в процессе работы что то пишет в файлы.
Со стороны хоста есть ограничение по длительности работы приложения, если лимит превышен приложение прибивается OS (вот такие современные кластеры). Соответственно, нужно писать приложение так, что бы оно эпизодически сбрасывало свое состояние на диск, и могло потом (при следующем кванте времени) состояние с диска поднять и продолжать работу. Продолжение может быть вообще на другом хосте (с общей дисковой системой). В идеале конечно, что бы приложение сбрасывало состояние на диск по сигналу, но использование вундервафлей типа criu довольно затруднительно - софт стоит старый, пароля рута ес-но нету.
Желательно, что бы для добавления такой функциональности приходилось минимально модифицировать код.
Сейчас это примерно так представляется, исходный код:
# всякая инициализация
...
t = 0
while t<=t_max:
# итерации по времени
...
if not load_state():
# всякая инициализация
...
t = 0
while t<=t_max:
# итерации по времени
...
dump_state()
Но у такого подхода есть недостатки - исходный код может иметь гораздо более сложную структуру, ну и модифицировать его придется... ХЗ как в общем. В идеале бы хотелось задамтить не только данные, но и стек, и войти при потоврном запуске в то же самое место. Это как можно сделать малой кровью?
И как это вообще делают нормальные люди?;-)