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语法错误(如果不在Z中,则在X中表示s)
1 回答
Python语法错误(无效)概率
3 回答
python语法错误*带有可选参数的args
10 回答
python语法错误2.5版有什么办法解决吗?
2 回答
Python语法错误2.7.4
3 回答
python语法错误30/09/2013
4 回答
Python语法错误E001
7 回答
Python语法错误not()op
9 回答
python语法错误outpu
5 回答
Python语法错误print len()
10 回答
python语法错误w3
1 回答
Python语法错误不是caugh
9 回答
python语法错误及yt-packag的使用
7 回答
python语法错误可以查出来!!瓦里亚布
6 回答
Python语法错误可能是缩进?
10 回答
Python语法错误和缩进
3 回答
Python语法错误在while循环中生成随机numb
3 回答
Python语法错误在哪里?
9 回答
python语法错误在尝试导入包时,但仅在远程运行时
7 回答
Python语法错误在电子邮件地址提取脚本中
5 回答