Как этого добиться: после выполнения функции все восстанавливается в состояние до ее вызова. Можно ли использовать fork Python

Программы на Python
Ответить
Anonymous
 Как этого добиться: после выполнения функции все восстанавливается в состояние до ее вызова. Можно ли использовать fork

Сообщение Anonymous »

Иногда мне приходилось создавать «пробную» версию функции.
В качестве простого примера: при разработке оценщика я мог бы захотеть выполнить предварительную оценку, чтобы увидеть, является ли текущая информации о зависимостях достаточно или нет. В этом случае я буду вызывать функцию eval так, как если бы она была пробной, т. е. меня интересует только ее возвращаемое значение bool, которое указывает на успех/неуспех. Самое главное, поскольку это всего лишь предварительная попытка, я хотел бы сохранить все в неизменном виде на протяжении всего выполнения, другими словами, никакие данные, такие как зависимость/счетчик/memoi/и т. д., не различаются до и после проверки.Теперь, если функция проверки достаточно проста, я, конечно, могу создать новую функцию, имитирующую старую, за исключением того, что каждая операция записи вместо этого выполняется в глубокой копии и т. д.
Однако, если функция имеет некоторые тысячи строк кода с переплетенной логикой. Писать новый уже нецелесообразно. Я могу полагаться только на систему регрессии, которая поможет выявить как можно больше проблем и принять на себя потенциальный риск.
Поэтому мне интересно
  • Есть ли какой-либо четко определенный способ добиться этого?
  • Можно ли использовать fork для реализации этого в Linux? то есть родительский процесс просто ничего не делает, а ждет дочерний процесс, дочерний выполняет функцию проверки и передает целевое значение родителю по каналу. Если моя память не так сильно заржавела, fork использует схему копирования при записи, поэтому она напоминает процесс, описанный выше, и я ожидаю, что накладные расходы будут относительно небольшими. Есть ли опасность при этом?
РЕДАКТИРОВАТЬ:
Ребята, я все еще здесь ожидая некоторых комментариев и обучения. Я заметил, что есть несколько голосов, чтобы закрыть этот вопрос. Если функция, о которой я просил, выглядит необоснованной, я хотел бы спросить, почему мой шаблон дизайна где-то настолько неправильный, что мне приходится делать эту ненужную попытку? Как я могу избежать этого пути? Или я что-то неправильно понял или упустил?

Подробнее здесь: https://stackoverflow.com/questions/792 ... d-to-the-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»