我的问题很简单:我有一个 400MB 的文件,里面有 10,000,000 行数据。我需要遍历每一行,做一些事情,然后从内存中删除该行以避免填充过多的 RAM。
由于我的机器有几个处理器,我优化这个过程的最初想法是创建两个不同的进程。可以一次读取文件几行并逐渐填充一个列表(列表的一个元素是文件中的一行)。另一个将有权访问这个相同的列表,并将 pop() 元素从中取出并处理它们。这将有效地创建一个从一侧增长并从另一侧收缩的列表。
换句话说,这种机制应该实现一个缓冲区,该缓冲区将不断地填充行以供第二个进程处理。但也许这并不比使用更快:
for line in open('/data/workfile', 'r'):