2013-11-25 3 views
1

file_a.py

while 1: 
    print 1 

Когда я удалить, переименовать, даже изменить "печать 1" на "печать 2", он все еще работает с печатью 1.Что происходит, когда я изменяю исходный код запущенной программы python?

Означает ли это, питона прогонов с PyC файлы? Какая особенность переводчика работает здесь?

+2

Даже если он использовал исходный исходный файл, перечитывая файл каждый раз, когда строка, необходимая для выполнения, была бы смехотворно медленной. –

+0

Он считывает файл в память один раз; он не будет перечитывать файл, если вы его измените. – user2357112

ответ

2

Возможно, вы неправильно поняли процесс выполнения. При использовании большинства обычных реализаций Python это происходит следующим образом: ваш исходный файл скомпилирован в байт-код и этот байт-код запускается в виртуальной машине. Изменение исходного файла после того, как факт не влияет на уже запущенный код.

То, что вы описали , является особенностью некоторых языков, однако (например, Erlang). Это называется hot swapping.

+0

Я слышал, что это может быть проблемой в bash, и чтобы избежать этого, вы можете обернуть свой код в фигурные скобки, чтобы заставить bash прочитать его все перед запуском. –

+0

Благодарим вас за ответ, поэтому, если у меня есть давняя программа python, когда я ее запускаю, нет никакого влияния, отредактировав исходный код до тех пор, пока я не прерву и не перезапущу программу python еще раз. – hanks

+0

@hanks Правильно. – arshajii

Смежные вопросы