在Python2.7中,序列化和反序列化对象列表的最快方法是什么?

2024-04-25 22:23:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要最快的方法来反序列化自定义类的一个大列表(20000项),其中该类只包含整数、浮点和字符串属性

我应该使用pickle、cPickle、json还是其他什么

到目前为止,我尝试了pickle,它在我尝试加载时崩溃。我尝试使用json.dumps,但它错误地指出我的自定义类型不可序列化

class MyType
...

list = []
for i in range(10000):
    list.append(MyType(i))

list.serialize?

Tags: 方法字符串json类型列表属性序列化错误
1条回答
网友
1楼 · 发布于 2024-04-25 22:23:36

考虑到类只包含简单的类型,如整数、浮点和字符串,您可以使用^{}模块,而且应该很快。对于两个整数(每个32位)、一个浮点(双精度)和一个字符串(最多20个字符),类似于此:

codec = struct.Struct('<iid20s')
size = codec.size
buf = bytearray(size * len(items))

offset = 0
for item in items):
    codec.pack_into(buf, offset, item.int1, item.int2, item.float1, item.string1)
    offset += size

现在buf包含所有数据,可以写入文件

相关问题 更多 >