Медленное попарное сравнение
У меня есть код, который открывает два файла, сохраняет их содержимое в наборы (set1 и set2) и сохраняет результаты парного сравнения этих наборов в выходной файл. Оба файла действительно большие (более 100 тыс. Строк в каждом), и на вывод этого кода уходит много времени (более 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()
1 ответ
Ваш код в первую очередь фальшивый, он должен быть:
r = [
h.write(a + '\n')
for a in set1
if a in set2
]
Во всяком случае, используйте set1.intersection(set2)
- это, вероятно, будет быстрее и яснее код.