2012-11-20 45 views
8

'YYYY-AA-GG' biçiminde çok sayıda tarih okuyan bir kodum var. Tüm bu tarihleri ​​ayrıştırarak, bir, iki veya üç gün ekleyebilsin, sonra aynı formatta geri yazabilmek şeyleri oldukça yavaşlatıyor.Daha hızlı bir strptime mi?

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() 

Herhangi bir öneri nasıl biraz hızlandırılacağı (veya çok)?

cevap

25

Faktör 7 yeterince mu?

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

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

DÜZENLEME: açık dilimleme ile harika bir fikir:

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

faktör 8.

+3

mwhhhah yapar. Sanırım seni seviyorum. –

+3

Bağlamda: strptime = 128s, bu = 61s ve 55'ler için açık: 'datetime.date (int (a [: 4]), int (a [5: 7]), int (a [8:10])) '. Şimdi strftime ve potansiyel olarak başka bir 10'unu eritmek için ... thx. –