Потокобезопасный эквивалент python time.strptime ()? - PullRequest
23 голосов
/ 11 марта 2010

Что-то, что я написал, вызывает много исключений AttributeError при использовании time.strptime () внутри потока. Похоже, что это происходит только в Windows (не в Linux), но, что бы ни было при поиске, кажется, что time.strptime () не считается поточно-ориентированным.

Есть ли лучший способ создать объект datetime из строки? Текущий код выглядит так:

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

Но это приводит к исключениям, поскольку он выполняется внутри потока.

Спасибо!

Ответы [ 4 ]

28 голосов
/ 11 марта 2010

Согласно отчету об ошибке , этого не произойдет, если вы вызовете strptime один раз, прежде чем создавать свои темы. Я сделал небольшое тестирование, которое, кажется, подтверждает это. Так что просто сделайте любой вызов strptime во время инициализации в качестве обходного пути.

17 голосов
/ 18 марта 2014

Еще один обходной путь для этой ошибки: вы можете просто импортировать _strptime вручную вместе с datetime

import _strptime
from datetime import datetime

# then, in threaded block
datetime.strptime(date, format)
0 голосов
/ 09 октября 2014

Когда я использую import datetime, datetime.datetime.strptime() больше не генерирует исключение.

0 голосов
/ 11 марта 2010

Вы сами пытались синхронизировать его вручную? Возможно использование декоратора синхронизации из этого рецепта .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...