2016-12-04 2 views
0

は次のPython(2.7.9)コードを検討他のファイルへの変更反映し:実行コード

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 

test.pyは(return [4,5,6]に変更する、と言う)が実行されている間、私はtest2.pyを変更する場合は、test.pyの出力は変化しません。これは予期しないことではない。

ただし、test2.pyへの変更を出力に反映したいと思います。これを行う方法はありますか?例えば。何かを再解析するようなものtest2.py毎回test2.getData()が呼び出されますか?

他のものは、コメントから、試してみました:

  • はループにimport test2を移動します。
  • テストが実行されている間にtest2.pycを削除しています(importのループ内およびループ外)。
+0

あなたのコードが実行される前にバイトコードに変換されていると仮定していますので、実行中にファイルへの変更が反映されません。 –

+0

importステートメントをループに移動しようとする可能性がありますが、 this –

+0

@ cricket_007 test2.pycが生成されますが、test2.pyを変更した後にそれを削除しても出力には影響しません。 –

答えて

1

私が正しく思い出すと、Pythonコードは実行前にバイトコードに変換されるので、コードを実行するときにコードを変更する方法はありません。 私がお勧めするのは、代わりにグローバル変数またはクラスを作成し、それを代わりに変更することです。代わりの解決方法は、データをファイルに書き込むことですが、ファイルシステムへのアクセスが必要であり、変数と同じくらい速くはないため、あまり効果がありません。