最初の投稿、あなたが望むように批判的になりなさい...
私の問題:1億4000万行の非常に大きなファイル(ファイル1)と300万行のわずかに小さいファイル(ファイル2)があります。ファイル2と一致するファイル1の行を削除したいと思います。直感的には、これはそれほど長くはかからない単純な検索と削除の問題のように見えました。私のコードは、24Gbプロセッサで実行するのに最大4日かかります。これをいくつかのファイルで実行したいので、時間の改善を望んでいます。ヘルプやコメントをいただければ幸いです。
サンプルファイル1:
reftig_0 43 0 1.0
reftig_0 44 1 1.0
reftig_0 45 0 1.0
reftig_0 46 1 1.0
reftig_0 47 0 5.0
サンプルファイル2:
reftig_0 43
reftig_0 44
reftig_0 45
コード:
data = open('file_1', 'r')
data_2 = open('file_2', 'r')
new_file = open('new_file_1', 'w')
d2= {}
for line in data_2:
line= line.rstrip()
fields = line.split(' ')
key = (fields[0], fields[1])
d2[key]=1
#print d2.keys()
#print d2['reftig_1']
tocheck=d2.keys()
tocheck.sort()
#print tocheck
for sline in data:
sline = sline.rstrip()
fields = sline.split(' ')
nkey = (fields[0],fields[1])
#print nkey
if nkey in tocheck:
pass
else:
new_file.write(sline + '\n')
#print sline