2016-10-25 110 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