私は非常に単純なプログラムに取り組んでおり、その要点を以下に示します。
post = open(INPUTFILE1, "rb")
for line in post:
cut = line.split(',')
pre = open(INPUTFILE2, "rb")
for otherline in pre:
cuttwo = otherline.split(',')
if cut[1] == cuttwo[1] and cut[3] == cuttwo[3] and cut[9] == cuttwo[9]:
OUTPUTFILE.write(otherline)
break
post.close()
pre.close()
OUTPUTFILE.close()
事実上、これは2つのcsvファイルを入力として受け取ります(「pre」と「post」)。「post」データの最初の行を調べ、列2、4、および10で一致する「pre」データの行を見つけようとします。一致する場合は、「pre」データをに書き込みます。新しいファイル。
それはうまく機能しますが、それは永遠にかかります。私の「投稿」データには数百(最大で1000)行しかないかもしれませんが、私の「前」データには1,500万行もあるかもしれません。その結果、終了までに10時間程度かかる場合があります。
私はPythonにかなり慣れていないので、最適化手法についてはまだ多くを学んでいません。誰かが私が何を試すことができるかについて何か指針を持っていますか?明らかに、「事前」データ全体で一致するものを検索すると、ログジャムが発生していることを理解しています。これをスピードアップする方法はありますか?