Потокобезопасный эквивалент python time.strptime()?
Что-то, что я написал, выдает много исключений AttributeError
при использовании time.strptime() внутри потока. Это похоже только на Windows (не на Linux), но независимо от того, что происходит в Gogling, кажется, что time.strptime() не считается потокобезопасным.
Есть ли лучший способ создать объект datetime из строки? Текущий код выглядит следующим образом:
val = DateFromTicks(mktime(strptime(val, '%B %d, %Y')))
Но это приводит к исключениям, которые выполняются внутри потока.
Спасибо!
Ответы
Ответ 1
В соответствии с отчет об ошибке это не происходит, если вы вызываете strptime
один раз перед созданием потоков. Я сделал небольшое тестирование, которое, похоже, подтверждает это. Поэтому просто вызовите strptime
во время инициализации в качестве обходного пути.
Ответ 2
Еще один обходной путь для этой ошибки, вы можете просто импортировать _strptime
вручную, вместе с datetime
import _strptime
from datetime import datetime
# then, in threaded block
datetime.strptime(date, format)
Ответ 3
Вы пытались вручную синхронизировать его самостоятельно? Возможно использование декодера синхронизации из этот рецепт.
Ответ 4
Когда я использую import datetime
, datetime.datetime.strptime()
больше не генерирует исключение.