有没有比Python的strftime更快的替代方法?

2024-04-30 03:10:25 发布

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

我正在用Python处理数十万个日期,注意到strftime函数非常慢。在

我用timeit来检查,它告诉我大约需要0.004,这对于一个小的数字来说是可以的,但是对于处理几千个这样的数据就有问题了。在

print(min(timeit.Timer("now.strftime('%m/%d/%Y')", setup=setup).repeat(7,1000))

有没有更快的选择?在


Tags: 数据函数setup数字minnowrepeatprint
2条回答

这在我的机器上稍微快一些(python 2.7.x)

def fmt(date):
    return "%02d/%02d/%d" % (date.month, date.day, date.year)

由于您有一个严格的格式,您只需直接访问datetime对象的字段,并使用Python字符串格式来构造所需的字符串:

'{:02d}/{:02d}/{}'.format(now.month, now.day, now.year)

在Python3中,这大约比strftime()快4倍。Python2的速度也更快,大约是2-3倍。在

Python 3中更快的是“旧”样式的字符串插值:

^{pr2}$

大约快了5倍,但是我发现这个对于python2来说要慢一些。在

另一个选择是使用^{},而不是{},但速度只有1.5倍:

time.strftime('%m/%d/%Y', now.timetuple())

最后,如何构造datetime对象?如果要将字符串转换为datetime(例如,strptime()),则使用字符串切片将传入字符串版本转换为传出字符串版本可能会更快。在

相关问题 更多 >