我正在使用Python OOP解决n-body模拟问题。我的每个粒子都是一个具有诸如质量,位置,速度等属性的对象,我希望每隔几个模拟时间就将粒子的属性写入文件中。因此,每个粒子将有一个文件,并且每一行在特定时间内都有其属性。因此,例如,我的课就像这样,
client_max_body_size 1024m;
最好的,更有效的方法是什么?
谢谢您的帮助。
答案 0 :(得分:1)
在python中,有一个名为Pickle的库,可让您 序列化或反序列化对象。与JSON之类的其他库相比,它效率不高,并引发了一些安全性问题(您可以here进行检查)。但这提供了一种使用以下方法编写和加载对象的简便方法:
pickle.dump(obj, file, protocol=None, *, fix_imports=True)
pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict")
另一种替代方法是使用JSON library methods:
json.dump
json.load
但是在这种情况下,您必须将对象转换为JSON库可以接受的某些内置数据类型,例如dict
,list
或tuple
,以防您需要加载对象时,必须重新创建它。像这样:
with open('particle1.json', 'w') as fp:
json.dump({'idx': particle.idx, 't': particle.t }, fp)
particle = Particle()
with open('particle1.json', 'r') as fp:
particle_properties = json.load(fp)
particle.idx = particle_properties['idx']
particle.t = particle_properties['t']