Как я могу найти пересечение двух больших файлов, эффективно используя Python?

У меня есть два больших файла. Их содержимое выглядит так:

134430513
125296589
151963957
125296589

Файл содержит несортированный список идентификаторов. Некоторые идентификаторы могут появиться более одного раза в одном файле.

Теперь я хочу найти пересечение часть двух файлов. Это идентификаторы отображаются в обоих файлах.

Я просто прочитал два файла на 2 набора, S1 и S2 . И получить пересечение со S1. Internersection (S2) . Но это потребляет много памяти и кажется медленно.

Так есть ли лучший или пифитонический способ сделать это? Если файл содержит так много идентификаторов, которые нельзя прочитать в SET с ограниченной памятью, что я могу сделать?

Редактировать: я прочитал файл на 2 набора, используя генератор:

def id_gen(path):
    for line in open(path):
        tmp = line.split()
        yield int(tmp[0])

c1 = id_gen(path)
s1 = set(c1)

все идентификаторов числовых. И MAX ID может быть 5000000000. Если использовать BitArray, он потребляет больше памяти.

5
задан amazingjxq 7 September 2011 в 09:59
поделиться