私は約1行の大きなcsvファイルを読んでいます。私は日付を解析することで問題に遭遇した。 Pythonは処理が遅いです。大きなファイルの解析日時を改善する方法はありますか?
ファイル内の1行は次のようになり、 '20170427,20:52:01.510,ABC,USD/MXN,1,OFFER,19.04274,9000000,[email protected]@8653948257753368229,0.0\n'
私はデータのみに目を通すならば、それは1分かかります。
t0 = datetime.datetime.now()
i = 0
with open(r"QuoteData.txt") as file:
for line in file:
i+=1
print(i)
t1 = datetime.datetime.now() - t0
print(t1)
129908976
0:01:09.871744
ただし、datetimeを解析しようとすると、8分かかります。
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
split()
は約1分かかり、日付の解析は、約6分かかります。これを改善するために何かできることはありますか?
あなたは[gevent](http://www.gevent.org/)を見ることができます。それは、あなたが望むだけ多くのスレッド間でプロセスを分割することを可能にします。実際には、CPU/memの上限に注意してください。 – Neil
日付を実際のdatetimeオブジェクトに変換する必要がありますか? – Grimmy
'' '' line [:s.index( '、')] ''日付をもっと速く取得するには?各行の形式が同じ場合は、ハードコードされたインデックスをスライスするだけです。 '' line [0:8] ''です。 – Grimmy