确定快照日期时间的大小

1 投票
1 回答
3519 浏览
提问于 2025-04-19 16:31

我现在正在把一个Python的datetime对象进行序列化,这样可以通过celery传递给一个任务,但我遇到了内存问题。我想找个办法来确定序列化一个datetime对象后占用的内存大小,这样我就可以和序列化一个Unix时间戳的大小进行比较。我知道时间戳会更小,但我特别想比较这两个序列化后的对象的大小。

1 个回答

3

被“腌制”的对象其实就是一串字节数组(可以想象成一个ASCII编码的字符串)。所以,你可以用 dumps 方法来获取这些字节,然后看看它的长度。在我的电脑上,一个被“腌制”的 datetime 对象是44个字节。这其中还包含了一些额外的信息,比如会有一个头部来指明使用的腌制协议版本。

import datetime
import pickle

dt = datetime.datetime.now()
size = len(pickle.dumps(dt))
print(size, 'bytes')

另外,如果你使用更高的协议,得到的“腌制”对象应该会更小。可以在 dump 方法中试试 protocol=pickle.HIGHEST_PROTOCOL

撰写回答