确定快照日期时间的大小
我现在正在把一个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
。