2017-06-09 4 views
0

私は2つのファイルを開き、その内容をセット(set1とset2)に保存し、これらのセットのペアワイズ比較の結果を出力ファイルに保存するコードを持っています。どちらのファイルも本当に大きく(それぞれ100Kを超える)、このコードは出力に長時間を要しています(10時間以上)。ゆっくりとペアごとの比較

パフォーマンスを最適化する手段はありますか?

def matches2smiles(): 
    with open('file1.txt') as f: 
    set1 = {a.rstrip('\n') for a in f} 

    with open('file2.txt') as g: 
     set2 = {b.replace('\n', '') for b in g} 

    with open('output.txt', 'w') as h: 
     r = [                  
      h.write(b + '\n') 
      for a in set1 
      for b in set2 
      if a in b 
      ] 

matches2smiles() 

答えて

0

あなたのコードが最初の場所で偽のですが、それは次のようになります。

r = [                  
     h.write(a + '\n') 
     for a in set1 
     if a in set2 
     ] 

とにかく、set1.intersection(set2)を使用する - それはおそらく、より速く、より明確なコードになります。

関連する問題