4
我需要從'2012-09-08 12:23:33'這樣的字符串時間戳進行大量的對話,進入基於時代的時間。然後我需要獲得兩個時間戳之間的時間差。我嘗試了兩次不同的方式:使用python將字符串時間戳轉換爲epoch時間的最快方法是什麼?
date1 = '2012-09-08'
time2 = '12:23:33'
timelist1 = map(int, date1.split('-') + time1.split(':'))
date2 = '2012-09-08'
time2 = '12:23:33'
timelist2 = map(int, date2.split('-') + time2.split(':'))
delta = datetime.datetime(*timelist2) - datetime.datetime(*timelist1)
print delta.seconds
第二種方式是:
date1 = '2012-09-08'
time1 = '12:23:33'
d1 = datetime.datetime.strptime(date1 + ' ' + time1, "%Y-%m-%d %H:%M:%S")
seconds1 = time.mktime(d1.timetuple())
....
seconds2 = time.mktime(d2.timetuple())
print seconds2-deconds1
然而這兩種方式都不夠快,因爲我有將近100百萬行動do.Any建議嗎?
如果你正在解析按時間排序的日誌或其他數據,那麼我建議你緩存'mktime(strptime())'的結果。如果每分鐘有超過10行,緩存所有內容,但秒數可能非常有效。或者,您可以只緩存日期。 'mktime'和'strptime'函數實在太慢了。 – BatchyX
謝謝,是的,我已經做了緩存,而我在這裏發佈的代碼沒有緩存的情況下誤解。 – cheneydeng
Follow up of http://stackoverflow.com/questions/12399162/faster-way-to-handle-time-string-with-python –