С difflib там алгоритм неправильный. Не выделяет он строки, которые есть только в одном из файлов.
Вот код с множествами, который правильно выделяет, только меняет порядок строк, так как множество не упорядочено.
#!/usr/bin/env python3
def diff(name1, name2):
with open(name1) as ifp1, \
open(name2) as ifp2:
return set(ifp1) ^ set(ifp2)
def main():
d = diff('file1.txt', 'file2.txt')
with open("out.txt", "w") as fout:
fout.writelines(d)
if __name__ == '__main__':
main()
[guest@localhost diff]$ ll
итого 21456
-rwxrw-r--. 1 guest guest 320 янв 9 21:32 diff.py
-rw-rw-r--. 1 guest guest 5490995 янв 9 21:39 file1.txt
-rw-rw-r--. 1 guest guest 5490995 янв 9 21:39 file2.txt
-rw-rw-r--. 1 guest guest 10977790 янв 9 21:40 out.txt
[guest@localhost diff]$ wc -l file1.txt
200100 file1.txt
[guest@localhost diff]$ wc -l file2.txt
200100 file2.txt
[guest@localhost diff]$ time ./diff.py
real 0m0.575s
user 0m0.524s
sys 0m0.045s
[guest@localhost diff]$ wc -l out.txt
400000 out.txt
[guest@localhost diff]$
Полсекунды уходит на два файла по 200100 строк, где последние 100 строк одинаковые.