Python的time.strptime()的线程安全等效方法?
我写的代码在使用 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
就可以了。