gpt4 book ai didi

Python读取一个巨大的文件并消除重复行

转载 作者:太空狗 更新时间:2023-10-30 00:31:49 26 4
gpt4 key购买 nike

我有一个包含重复行的巨大文本文件。大小约为 150000000 行。我想找到最有效的方法来读取这些行并消除重复项。我正在考虑的一些方法如下:-

  1. 读入整个文件,做一个列表(集合(行))。
  2. 一次读入 10k 行,根据我已有的内容做一个列表(设置(行)),再读入列表中的 10k 行,做一个列表(设置(行))。重复。

您将如何解决这个问题?任何形式的多处理都有帮助吗?

最佳答案

多处理并没有真正的帮助,因为你的瓶颈是内存。您将需要使用哈希:

  1. 阅读行
  2. 计算散列,例如md5,在​​一组所有遇到的散列中查找它。
  3. 如果在集合中找不到散列,则输出行并将此散列添加到集合中。

注意事项:

  • md5 占用 128 位,因此即使没有开销,它也超过 2G 内存。
  • set 和 dict 有很大的内存开销。

因此,如果您有 4 个以上的演出,那是可行的。一种更具可扩展性的解决方案是将遇到的哈希存储在磁盘上的排序文件中,并每次都搜索它们。这会(很多!)慢,但您可以根据需要尽可能低的内存占用。

此外,如果您不关心结果文件中的行顺序,您可以根据一些哈希函数将文件拆分为更小的文件(md5 以 a 开头的行,md5 以 b 开头的行等)。这将允许您使它们足够小,以便 sort | uniq 它们(或者如果你愿意,用 python 在内存中排序)并连接结果。

关于Python读取一个巨大的文件并消除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com