2016-10-25 109 views
1

是它做了一個問題:同步功能,但不關閉DBM

import time 
import dumbdbm 

db = dumbdbm.open('db.db', 'c') 

# modify the persistent dict/"DB" here 
db['foo'] = 'bar' 
db.sync()   

while True: 
    # doing other things, sometimes modifying the db + syncing with .sync() 
    time.sleep(1) 

,並在休眠時間與CTRL + Ç打破程序,即dumbdbm將無法​​正確關閉

dumbdbm.sync()足以保證數據的安全性,還是.close()是絕對強制性的?

+0

您可以在睡覺前關閉*。 –

+0

@ScottHunter,它是我整個事情的簡化代碼。我修改了。 – Basj

回答

1

當說到調用該方法同步磁盤上的目錄和數據文件時,documentation implies同步就足夠了。

但是,我認爲這裏更好的方法是在退出之前關閉文件。如果你總是退出Ctrl-C,你可以通過註冊SIGINT(這是Ctrl-C發送的信號)的信號處理程序來實現此目的。該信號處理程序應該同步,關閉數據庫,然後調用exit()。

+0

謝謝@gbe。你能否引用文件的哪個部分說足夠了? – Basj

+0

我已經編輯了我的答案,以包含對該部分文檔的引用。 – gbe