[英]Access variable in memory with python
我正在嘗試python中的一些東西,希望能學到它。 我在 Ubuntu 20.04 上。 我有以下問題:
當我編寫腳本並想嘗試它、進行更改並重新運行它以查看會發生什么時,我使用文本編輯器 (Geany)。
現在,我在我的腳本中編寫了一個 function,其中包含一個非常長的列表(43.5MB)。 例如,如果我想檢查列表的一個元素並編寫print(mylist[0][0]['key'])
,那么當我重新運行腳本時會重新填充列表,這需要很長時間。 但是該列表已經在 memory 中,並且在第二次運行中沒有改變。 但是,如果我確實更改了代碼的 rest 中的某些內容,例如列表生成部分,那么我可以輕松地重新運行整個內容並查看更改的效果。
如果我在 python 控制台中執行此操作,那么我可以根據我要檢查的元素打印更改索引的列表,但如果我想在列表生成中更改某些內容,那就沒那么容易了。
所以我進退兩難。 有沒有辦法運行腳本一次,然后訪問更改索引的列表而不必重新運行腳本,同時保持靈活性,也可以更改腳本的其他部分並再次運行它?
這是我將如何處理你的腳本,比如my_script.py
。
import pickle
def generate_list():
return []
def dump_file(data, filepath):
with open(filepath, 'wb') as f:
pickle.dump(data, f)
def load_file(filepath):
with open(filepath, 'rb') as f:
return pickle.load(f)
if __name__ == "__main__":
generate_requested = len(sys.argv) >= 2 and sys.argv[1] == 'generate'
if generate_requested:
my_list = generate_list()
dump_file(my_list, 'cached_list.pickle')
else:
# try load the list from file, if failed, generate the list
try:
my_list = load_file('cached_list.pickle')
except:
my_list = generate_list()
dump_file(my_list, 'cached_list.pickle')
# now use my_list
如果您調用python my_script.py
它將嘗試從同一文件夾中的文件加載文件cached_list.pickle
。 如果加載失敗(例如,如果此文件不存在),列表將重新生成並保存到文件中以供將來加載。 您也可以調用python my_script.py generate
之類的腳本來強制重新生成列表並將其保存到文件中。 您也可以從文件夾中刪除文件以重新生成它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.