簡體   English   中英

在 Python 2.7 中序列化和反序列化對象列表的最快方法是什么?

[英]What's the fastest way to serialize and deserialize a list of objects in Python 2.7?

我需要最快的方法來反序列化自定義 class 的大型列表(20000 項),其中 class 僅包含整數、浮點數和字符串屬性。

我應該使用 pickle、cPickle、json 還是其他什么?

到目前為止,我嘗試了 pickle,它在我嘗試加載時崩潰了。 我嘗試使用 json.dumps,它錯誤地指出我的自定義類型不可序列化。

class MyType
...

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

list.serialize?

鑒於 class 僅包含簡單類型,如整數、浮點數和字符串,您可以使用struct模塊,它應該很快。 對於兩個整數(每個 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包含所有數據並且可以寫入文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM