2010-03-11 22 views
17

Một cái gì đó tôi đã viết ném rất nhiều AttributeError trường hợp ngoại lệ khi sử dụng time.strptime() bên trong một sợi. Điều này dường như chỉ xảy ra trên Windows (không phải trên Linux) nhưng bất cứ điều gì- khi a'Googling, có vẻ như time.strptime() không được coi là thread-safe.Thread-safe tương đương với time.strptime của python()?

Có cách nào tốt hơn để tạo đối tượng ngày giờ từ chuỗi không? Mã hiện tại trông giống như:

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

Nhưng, điều này mang lại ngoại lệ khi nó chạy bên trong một chuỗi.

Cảm ơn!

Trả lời

24

Theo số bug report, điều này không xảy ra nếu bạn gọi strptime một lần trước khi tạo chủ đề của mình. Tôi đã thực hiện một thử nghiệm nhỏ mà dường như để xác nhận điều này. Vì vậy, chỉ cần thực hiện bất kỳ cuộc gọi nào đến strptime trong quá trình khởi tạo dưới dạng giải pháp thay thế.

+2

OMG hackalicious! – Wells

0

Bạn đã thử tự đồng bộ hóa theo cách thủ công chưa? Có thể sử dụng trình trang trí đồng bộ hóa từ this recipe.

13

Chỉ cần một workaround cho lỗi này, bạn chỉ có thể nhập _strptime bằng tay, cùng với datetime

import _strptime 
from datetime import datetime 

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

Khi tôi sử dụng import datetime các datetime.datetime.strptime() không ném một ngoại lệ nữa.

+0

nó tiếp tục ném ngoại lệ cho tôi ... – mgaido

Các vấn đề liên quan