2012-11-20 10 views
8

Mam kod, który odczytuje ogromną liczbę dat w formacie "RRRR-MM-DD". Analizowanie wszystkich tych dat, aby można było dodać jeden, dwa lub trzy dni, a następnie zapisanie w tym samym formacie spowalnia znacznie.A szybszy strptime?

3214657 14.330 0.000 103.698 0.000 trade.py:56(effective) 
3218418 34.757 0.000 66.155 0.000 _strptime.py:295(_strptime) 

day = datetime.datetime.strptime(endofdaydate, "%Y-%m-%d").date() 

Jakieś sugestie, jak przyspieszyć nieco (lub dużo)?

Odpowiedz

25

Czy współczynnik 7 jest wystarczający?

datetime.datetime.strptime(a, '%Y-%m-%d').date()  # 8.87us 

datetime.date(*map(int, a.split('-')))     # 1.28us 

EDIT: świetny pomysł z wyraźną krojenia:

datetime.date(int(a[:4]), int(a[5:7]), int(a[8:10])) # 1.06us 

sprawia, że ​​czynnik 8.

+3

mwhhhah. myślę, że cię czciłem. –

+3

W kontekście: strptime = 128s, this = 61s i for 55s be explicit: 'datetime.date (int (a [: 4]), int (a [5: 7]), int (a [8:10])) '. Teraz, aby zastąpić strftime i potencjalnie przyciąć kolejne 10s ... thx. –

Powiązane problemy