确定腌制日期时间的大小

时间:2014-09-03 20:52:41

标签: python datetime pickle

我正在挑选一个python datetime通过celery传递给任务,并且遇到了内存问题。我想找到一种方法来确定酸洗datetime对象的结果大小,以便我可以将它与pickle unix时间戳进行比较。我意识到时间戳会更小,但我特别想比较两个腌制对象的大小。

1 个答案:

答案 0 :(得分:1)

一个pickle对象只是一个字节数组(想想ASCII编码的字符串)。因此,使用dumps来获取字节并查看长度。在我的机器上,一个pickle datetime是44个字节。这包括一些开销,例如,它将包括指示pickle协议版本的头部。

import datetime
import pickle

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

此外,如果使用更高的协议,则生成的pickle对象应该更小。在protocol=pickle.HIGHEST_PROTOCOL中尝试dump