私は.txt
ファイルに格納された大きなデータを含むプロジェクトに取り組んでいます。私のプログラムは少し遅いです。私の考えでは、私のプログラムが非効率的にファイルを解析するという理由があります。Python - 最適化ファイルの解析
FILEサンプル:
X | Y | Weight
--------------
1 1 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
パーサCODE:私は何行がなくなるまで処理するデータの小さなチャンクを解析し、この関数は、NumberOfRows/N
回呼び出される
def _parse(pathToFile):
with open(pathToFile) as f:
myList = []
for line in f:
s = line.split()
x, y, w = [int(v) for v in s]
obj = CoresetPoint(x, y, w)
myList.append(obj)
return myList
左。私の.txt
はいくつかですギガバイトです。
私は明らかにループ内でNumberOfLines
回繰り返していることがわかります。これは大きなボトルネックであり、BADです。これは私の質問に私をリード:
質問: ファイルを解析するための適切なアプローチとは何か、そうするための最も効率的な方法だろうと.txt
で異なるデータを整理なるかは、パーサーを留めますか?もしそうなら、私はどのようにしてdata
をfile
の中に編成すべきですか?
私はメインメモリ上のファイル全体を非常に大きくすることはできませんが、これをメインメモリに持ち込まないでしょうか? –
はいこれはメモリに取り込まれます。それはどれくらい大きいですか?あなたがスパークのRDDのような分散されたものに入るべきであるよりも本当に必要なら、それは時間がかかるでしょう。データのサンプリングはどうですか?この質問を見て:http://stackoverflow.com/questions/22258491/read-a-small-random-sample-from-a-big-csv-file-into-a-python-data-frame、ループすることができますすべてのデータを一度にメモリにロードしないようにします。 – lorenzori