同步但不关闭dbm

时间:2016-10-25 00:27:44

标签: python python-2.7 dictionary flush 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 + C 打破程序,即dumbdbm 将无法正常关闭

dumbdbm.sync()是否足以保证数据的安全性,或者.close()绝对是强制性的?

1 个答案:

答案 0 :(得分:1)

documentation implies同步调用该方法同步磁盘上的目录和数据文件时,它就足够了。

但是,我认为更好的方法是在退出之前关闭文件。如果你总是退出Ctrl-C,你可以通过注册SIGINT的信号处理程序(这是Ctrl-C发送的信号)来实现这一点。)这个信号处理程序应该同步,关闭DB,然后调用exit()。