Программа загружается в вашу основную память. Если вы измените исходный файл, ничего не произойдет. Представьте, что процессор будет читать инструкции с жесткого диска ...
Феликс Клинг,
15
@Felix: это называется «Выполнить на месте» (XIP).
Обратите внимание , что пакетные файлы Windows , действительно выполнять на месте, так что это не гипотетический вопрос, есть языки, которые там ведут себя таким образом.
yoyo
Ответы:
260
Ничего, потому что Python предварительно компилирует ваш скрипт в PYC-файл и запускает его.
Однако, если возникает какое-то исключение, вы можете получить немного вводящее в заблуждение объяснение, потому что строка X может иметь другой код, чем до запуска сценария.
Но что, если вы перезапустите во время работы, когда новые файлы pyc перезапишут старые, это вызовет проблемы в программе, которая уже была запущена или нет?
замедленная
26
Ничего не произошло. Я также проверил это в небольшом тесте. Что происходит: Pyc является только компилятором. И этот компилятор загружается в ОЗУ и затем выполняется. Поэтому всегда можно изменить программу, перекомпилировать и запустить другой экземпляр, например, в другой консоли.
Крис
7
@Chris Я запустил экземпляр моего скрипта Python в одной консоли. Пока он работал, я изменил две строки кода и запустил другой экземпляр в отдельной консоли. Через некоторое время из первой консоли вернулась ошибка о двух строках кода, которые я изменил после запуска! Просьба помочь
double_j
14
@ Крис, я думаю, я знаю, что здесь происходит. Если вы изменяете сценарий и сохраняете его во время его работы, а ошибки предыдущей версии при считывании трассировки открывают текущую версию файла и заставляют трассировку выглядеть иначе, чем при запуске. Я видел это сам несколько раз.
Ответы:
Ничего, потому что Python предварительно компилирует ваш скрипт в PYC-файл и запускает его.
Однако, если возникает какое-то исключение, вы можете получить немного вводящее в заблуждение объяснение, потому что строка X может иметь другой код, чем до запуска сценария.
источник