由于Python的datetime和time中的_strptime方法不支持多线程,运行时会报错:
import datetime
import threadimport timedef f():
datetime.datetime.strptime("20100101","%Y%m%d")for _ in xrange(3): thread.start_new_thread(f, ())time.sleep(3)Unhandled exception in thread started by <function f at 0x2b52c24e66e0>
Traceback (most recent call last): File "test.py", line 7, in f datetime.datetime.strptime("20100101","%Y%m%d")AttributeErrorUnhandled exception in thread started by <function f at 0x2b52c24e66e0>:Traceback (most recent call last): File "test.py", line 7, in f_strptime datetime.datetime.strptime("20100101","%Y%m%d")AttributeError: _strptime参考
在源文件中可以fix这个bug,不过对于用户来说,还是在使用的时候加锁吧。。
c = threading.RLock()
def f(): with c: datetime.datetime.strptime("20100101","%Y%m%d")
RLock参考