Python:COLLECTION库的双端队列在处理大量数据时占用时间和内存

问题描述 投票:0回答:1

我已经使用Core Python API为我的ETL项目编写了一个文件到文件验证。它具有重复检查,计数检查,文件大小检查,逐行比较以及将冲突记录到另一个输出文件中的方法。我正在使用“集合”库对象:计数器和双端队列,而不是方法中的普通列表。运行正常。但是对于大小在4000万以上的文件,则需要6到7分钟才能运行整个验证。当我调试了方法和主要操作的性能后,发现在将文件内容转换为双端队列的行下面需要3到4分钟。

with open(sys.argv[1]) as source,open(sys.argv[2]) as target:
    src = deque(source.read().splitlines())
    tgt = deque(target.read().splitlines())

所以在这里我需要做一些调整。我想在以下几点上寻求帮助

  1. 将大文件内容写入的有效方法是什么集合对象
  2. 如何在降低内存利用率的同时处理大量收集对象
  3. deque.clear()是否也会释放内存?
  4. 如果我创建了收集对象A并存储了一些数据。然后,我清除了其中的内容,然后创建了另一个收集对象B并存储了一些数据。像这样,如果我在使用后继续清除集合对象,这是否对程序的性能有帮助?
  5. 希望在这里伸出援手

我已经使用Core Python API为我的ETL项目编写了一个文件到文件验证。它具有用于重复检查,计数检查,文件大小检查,逐行比较以及记录...

python python-2.7 python-2.x
1个回答
0
投票

您可以跳过read()

© www.soinside.com 2019 - 2024. All rights reserved.