Sha*_*gde 5 python pickle protocol-buffers
假设我有一个像这样的 python 类:
import pickle
import msg_pkt_pb2
class Solver(object):
def __init__(self, proto_objs:msg_pkt_pb2.MessagePackets, _obj_fn=lambda x,y:(x - y)**2):
self._proto_objs = proto_objs
self.num_iterations = 0
self.num_pass = 0
self._obj_fn = _obj_fn
def solve_or_die(self):
try:
...
_obj_fn(a, b)
except:
self._make_ckpt()
def _make_ckpt(self):
f = open('ckpt.pkl', 'wb')
pickle.dump(self, f)
f.close()
def load_from_ckpt(self, filename):
...
Run Code Online (Sandbox Code Playgroud)
原型:
message MessagePkt {
string name=1;
int32 id=2;
string payload=3;
}
message MessagePackets{
int32 id=1;
repeated MessagePacket message_pkts=2;
}
Run Code Online (Sandbox Code Playgroud)
我想序列化这个包含原型对象(部分填充)的对象,不幸的是,当我尝试序列化这个对象时,我得到一个异常:
_pickle.PicklingError: Can't pickle <class 'msg_pkt_pb2.MessagePackets'>: it's not the same object as msg_pkt_pb2.MessagePackets
Run Code Online (Sandbox Code Playgroud)
让我知道保存该对象并将其加载回来的最佳方法是什么?
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |