python執行中修改程式碼importlib過載模組
無聊測試了下,發現:
1.python只import模組一次,在import某個模組後就存在記憶體中,此時修改該模組沒有用
2.python3提供 importlib模組,reload方法重新載入模組.
3.但是該reload方法有延遲,似乎並不會等reload完畢,直接會繼續執行
4.在reload後加延遲,起到預期效果,兩個py互相呼叫和修改
test2.py:
import test1
import importlib
import time
def modify(ii):
with open('test1.py','r') as f_r:
lines = f_r.readlines()
with open('test1.py','w') as f_w:
i = 1
for line in lines:
if i == 19:
num = int(line)+ii
line = '\t\t'+str(num)+'\n'
i = i+1
f_w.write(line)
def f2():
i2= \
1
print('i2 =',i2)
modify(i2)
importlib.reload(test1)
time.sleep(0.2)
if i2<10000:
test1.f1()
if __name__=='__main__':
f2()
print("test2 end")
test1.py:
import test2
import importlib
import time
def modify(ii):
with open('test2.py','r') as f_r:
lines = f_r.readlines()
with open('test2.py','w') as f_w:
i = 1
for line in lines:
if i == 19:
num = int(line)+ii
line = '\t\t'+str(num)+'\n'
i = i+1
f_w.write(line)
def f1():
i1= \
2
print('i1 =',i1)
modify(i1)
importlib.reload(test2)
time.sleep(0.2)
if i1<10000:
test2.f2()
if __name__=='__main__':
f1()
print("test1 end")