Запуск скрипта на python и изменение ветки git - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь найти способы более эффективно использовать свое время при программировании.

У меня есть скрипт на python, который выполняет некоторую тяжелую работу (это может занять часы), чтобы закончить.Сейчас большая часть работы связана с сетью, поэтому у меня есть много ресурсов для процессора.

Если бы скрипт представлял собой исполняемый файл на двоичном языке C, было бы неплохо выполнить git checkout для другой ветви и выполнить дополнительную работу, я мог бы даже изменить двоичный файл на диске, поскольку он был скопирован в ram, так что покаЗавершение работы не повлияет на вывод программы.

Но скрипты Python переведены, а не скомпилированы.Что произойдет, если я начну вмешиваться в исходный файл, могу ли я повредить вывод программы или текстовый файл и связанный импорт будут скопированы в ОЗУ, что позволит мне изменить исходный код без риска изменения поведения работающей программы?

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Почему бы не иметь другой рабочий каталог, где вы вносите свои изменения?Много ли вспомогательных данных или что-то, что затрудняет настройку рабочего каталога?Т.е. если у вас рабочий каталог A, git clone A B, а затем работать в B.Когда вы закончите, вы можете вернуть изменения с B на A:

git remote add B ../B
git pull B master
0 голосов
/ 05 декабря 2018

В общем, если у вас есть один файл 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 ed, будет загружена обновленная версия.

Обходной путь - поместить все ваши импортные файлы в начало файла, что вы, вероятно, все равно делаете.

0 голосов
/ 05 декабря 2018

Когда запускается программа на python, она compiled (что-то вроде перевода) в файл .pyc, который затем запускается интерпретатором python.Когда вы изменяете файл, он НЕ должен влиять на код, если он уже запущен.

Вот соответствующий ответ на стекопотока. Что произойдет, если я изменю скрипт Python во время его работы?

...