Python中文
首页
教程
问答
标签
搜索
登录
注册
Python中的原子状态存储?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我在做一个不可靠系统的项目,我认为它在任何时候都可能失败。我要保证的是,如果我写了_状态,而机器在操作中失败,则read_状态将读取有效状态或根本没有状态。我已经实现了一些我认为会在下面起作用的东西——我对那些批评或者其他解决方案感兴趣,如果有人知道的话。在</p> <p>我的想法是:</p> <pre><code>import hashlib, cPickle, os def write_state(logname, state): state_string = cPickle.dumps(state, cPickle.HIGHEST_PROTOCOL) state_string += hashlib.sha224(state_string).hexdigest() handle = open('%s.1' % logname, 'wb') handle.write(state_string) handle.close() handle = open('%s.2' % logname, 'wb') handle.write(state_string) handle.close() def get_state(logname): def read_file(name): try: f = open(name,'rb') data = f.read() f.close() return data except IOError: return '' def parse(data): if len(data) < 56: return (None, '', False) hash = data[-56:] data = data[:-56] valid = hashlib.sha224(data).hexdigest() == hash try: parsed = cPickle.loads(data) except cPickle.UnpicklingError: parsed = None return (parsed, valid) data1,valid1 = parse(read_file('%s.1'%logname)) data2,valid2 = parse(read_file('%s.2'%logname)) if valid1 and valid2: return data1 elif valid1 and not valid2: return data1 elif valid2 and not valid1: return data2 elif not valid1 and not valid2: raise Exception('Theoretically, this never happens...') </code></pre> <p>例如:</p> ^{pr2}$
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我将添加一个异端的回答:使用sqlite怎么样?或者,可能是bsddb,但是这似乎是不推荐使用的,您必须使用第三方模块。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
Python中两个字典的交集
9 回答
python中两个字符串上的异或操作数?
9 回答
Python中两个字符串中的类似句子
1 回答
Python中两个字符串之间的Hamming距离
9 回答
python中两个字符串之间的匹配模式
9 回答
python中两个字符串之间的按位或
6 回答
python中两个字符串之间的数据(字节)切片
10 回答
python中两个字符串之间的模式
2 回答
python中两个字符串作为子字符串的区别
3 回答
Python中两个字符串元组的比较
9 回答
Python中两个字符串列表中的公共字符串
10 回答
python中两个字符串的Anagram测试
2 回答
Python中两个字符串的正则匹配
2 回答
python中两个字符串的笛卡尔乘积
7 回答
Python中两个字符串相似性的比较
7 回答
python中两个字符串语义相似度的求法
2 回答
Python中两个字符置换成固定长度的字符串,每个字符的数目相等
2 回答
Python中两个对数方程之间的插值和平滑数据
9 回答
Python中两个对象之间的And/Or运算符
10 回答
python中两个嵌套字典中相似键的和值
2 回答