2016-12-04 4 views
0

Рассмотрим следующий Python (2.7.9) код:Выполнить код из другого файла Python, отражая изменения в другой файл

test.py

import test2 
import time 

while True: 
    print test2.getData() 
    time.sleep(1) 

test2.py

def getData(): 
    return [1,2,3] 

Выполняется с:

python -u test.py 

Если я изменяю test2.py пока test.py работает (например, изменение его return [4,5,6]), выход test.py не меняется. Это не неожиданно.

Однако, я хотел бы внести изменения в test2.py для отражения в выходе. Есть ли способ сделать это? Например. что-то вроде reparsing test2.py каждый раз, когда вызывается test2.getData()?

Другие вещи пытались, от комментариев:

  • Перемещение import test2 в петлю.
  • Извлечение test2.pyc при запуске теста (с import в и из цикла).
+0

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

+0

Возможно, вы могли бы попытаться переместить оператор импорта в цикле, но это все еще кажется странным, почему вы хотите этот –

+0

@ cricket_007 test2.pyc генерируется, хотя его удаление после изменения test2.py не влияет на выход. –

ответ

1

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

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

  • Нет связанных вопросов^_^