亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 shelve.sync 不能按預期工作?

為什么 shelve.sync 不能按預期工作?

人到中年有點甜 2022-10-11 21:40:02
為什么不shelve同步world以下示例中的第二個鍵 ( )?我sync兩次調用該方法來更新數據 - 但它沒有這樣做 - 也沒有引發異常。這是預期的行為嗎?一般來說,我可以依靠同步總是發生嗎?我正在評估shelve通過保存我的應用程序的狀態(一個深度嵌套的對象)來減少我的“內存中”應用程序的加載時間的一個選項。另外,有誰知道時間復雜度是shelve.sync多少?深度嵌套的對象發生的變化O(delta)在哪里?detlaimport shelveexample = {}d = shelve.open("shelve.db", writeback=True)d["example"] = exampleexample["hello"] = "hello"d.sync()example["world"] = "world"d.sync()d.close()d = shelve.open("shelve.db", writeback=True)print(d["example"]["hello"])print(d["example"]["world"])
查看完整描述

1 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

架子有一個writeback=True緩存,用于存儲從緩存中檢索到的對象。檢索兩次的元素從緩存中檢索,緩存用于在書架關閉或同步時將更改寫回文件。

Shelf.sync()將所有緩存條目寫回磁盤上的文件,并清除緩存。架子忘記了所有檢索到的對象。對 的進一步更改example不會反映在架子上,如果您d["example"]在同步后再次嘗試檢索,您將得到一個從架子上重建的新 dict,而不是得到example.

看起來沒有公共接口可以在不刷新緩存的情況下同步更改。


此外,sync重新腌制緩存中的每個條目,無論有沒有改變(它不知道),并將新的腌制寫回磁盤。這需要多長時間。


查看完整回答
反對 回復 2022-10-11
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號