簡體   English   中英

memory 和 python 中的訪問變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM