Python的time.strptime()的线程安全等效方法?

24 投票
4 回答
7853 浏览
提问于 2025-04-15 20:19

我写的代码在使用 time.strptime() 这个函数时,在线程里会抛出很多 AttributeError 异常。这种情况似乎只在Windows系统上出现(在Linux上没有问题),不过无所谓——我在网上查了一下,发现 time.strptime() 这个函数被认为不是线程安全的。

有没有更好的方法可以从字符串创建一个日期时间对象呢?我现在的代码是这样的:

val = DateFromTicks(mktime(strptime(val, '%B %d, %Y')))

但是,这段代码在线程里运行时会出现异常。

谢谢!

4 个回答

0

你有没有试过自己手动同步一下?可以考虑使用这个链接里的同步装饰器,看看能不能解决问题:这个食谱

19

这是解决这个bug的另一种方法,你可以手动导入 _strptime,同时导入datetime。

import _strptime
from datetime import datetime

# then, in threaded block
datetime.strptime(date, format)
28

根据这个错误报告,如果你在创建线程之前先调用一次strptime,就不会出现这个问题。我做了一些测试,似乎也证实了这一点。所以,作为一个解决办法,只需在初始化时调用一次strptime就可以了。

撰写回答