Je lis un gros fichier csv qui a environ 1B lignes. J'ai rencontré un problème avec l'analyse de la date. Python est lent dans le traitement.Existe-t-il un moyen d'améliorer la vitesse de la date d'analyse pour les fichiers volumineux?
une seule ligne dans le fichier ressemble à ce qui suit, '20170427,20:52:01.510,ABC,USD/MXN,1,OFFER,19.04274,9000000,[email protected]@8653948257753368229,0.0\n'
si je regarde seulement à travers les données, il faut 1 minute. Mais si j'ai essayé d'analyser la date et l'heure, cela prendra 8 minutes.
t0 = datetime.datetime.now()
i = 0
with open(r"D:\FxQuotes\ticks.log.20170427.txt") as file:
for line in file:
strings = line.split(",")
datetime.datetime(
int(strings[0][0:4]), # %Y
int(strings[0][4:6]), # %m
int(strings[0][6:8]), # %d
int(strings[1][0:2]), # %H
int(strings[1][3:5]), # %M
int(strings[1][6:8]), # %s
int(strings[1][9:]), # %f
)
i+=1
print(i)
t1 = datetime.datetime.now() - t0
print(t1)
129908976
0:08:13.687000
Le split()
prend environ 1 minute, et l'analyse syntaxique date prend environ 6 minutes. Y a-t-il quelque chose que je puisse faire pour améliorer cela?
Vous pouvez regarder dans [gevent] (http://www.gevent.org/). Cela vous permettrait de diviser le processus entre plusieurs threads - autant que vous le souhaitez, en fait, alors faites attention aux cpu/mem caps. – Neil
Devez-vous convertir la date en un objet datetime réel? – Grimmy
'' line [: s.index (',')] '' pour que la date pique plus vite? ou simplement découper un index codé en dur si le format de chaque ligne est le même. '' ligne [0: 8] ''. – Grimmy