134430513 125296589 151963957 125296589
该文件包含一个未排序的id列表。某些id可能会在单个文件中出现多次。
现在我想找到两个文件的交集部分。也就是两个文件中都出现的id。
我将这两个文件读入2个集合s1和s2中,并通过s1.intersection(s2)获取交集。但这样会消耗很多内存并且似乎很慢。
那么有没有更好或者更pythonic的方法来做到这一点呢?如果文件包含太多id而无法使用有限的内存读取到set中,我该怎么办?
编辑:我使用生成器将文件读入了两个集合中:
def id_gen(path):
for line in open(path):
tmp = line.split()
yield int(tmp[0])
c1 = id_gen(path)
s1 = set(c1)
所有的ID都是数字。最大的ID可能是5000000000。如果使用bitarray,它会消耗更多的内存。