Я пытаюсь найти способы лучше использовать свое время во время программирования.
У меня есть сценарий python, который выполняет некоторую тяжелую работу (это может занять несколько часов), чтобы закончить. Теперь большая часть работы, которую он выполняет, связана с сетью, поэтому у меня много ресурсов процессора.
Если скрипт был исполняемым двоичным кодом C, было бы неплохо git checkout на другую ветку и выполнять дополнительную работу, я даже мог бы модифицировать двоичный диск на диске, поскольку он был скопирован в ram, поэтому пока он не завершит работу, я не буду влияют на выход программы.
Но скрипты python переводятся, а не компилируются. Что произойдет, если я начну фальсифицировать исходный файл, могу ли я повредить выходные данные программ или текстовый файл и связанные им копии, скопированные в ОЗУ, позволяя мне вмешаться в исходный код, не рискуя изменить поведение запущенной программы?
Когда запускается программа python, она compiled
(вроде как, более как переведенный) в.pyc файл, который затем запускается интерпретатором python. Когда вы меняете файл, он не должен влиять на код, если он уже запущен.
Ниже приведен соответствующий ответ stackoverflow. Что произойдет, если я изменю скрипт Python во время его запуска?
Почему бы не создать другой рабочий каталог, в котором вы внесете изменения? Есть ли много вспомогательных данных или что-то, что затрудняет настройку рабочего каталога? Т.е. если ваш рабочий каталог A
, git clone AB
, а затем работайте в B
Когда вы закончите, вы можете вернуть изменения от B
до A
:
git remote add B ../B
git pull B master
A/data
, то в каталоге B
введите ln -s /path/to/A/data .
Это предполагает, что ваша ОС достаточно юникси, чтобы иметь символические ссылки.
В общем, если у вас есть один файл Python, который вы запускаете как сценарий, все в порядке. Когда вы запускаете файл, он компилируется в байт-код, который затем выполняется. Вы можете изменить исходный скрипт в этот момент, и ничего не сломается.
Однако мы можем умышленно сломать его, написав какой-то ужасный, но юридический код:
horrible.py
:
from time import sleep
sleep(10)
import silly
silly.thing()
silly.py
:
def thing():
print("Wow!")
Вы можете запустить horrible.py
и пока он работает, вы можете редактировать silly.py
на диске, чтобы сделать что-то еще. Когда silly.py
окончательно import
, обновленная версия будет загружена.
Обходной путь состоит в том, чтобы поместить весь ваш импорт в верхнюю часть файла, который, вероятно, вы все равно сделаете.