删除 pool.map() python 中的列表元素


    processPool.map(parserMethod, ((inputFile[line:line + chunkSize], sharedQueue) for line in xrange(0, lengthOfFile, chunkSize)))
  1. 在这里,我将控制权传递给带有参数输入文件[line:line + chunkSize]元组和一个共享队列的parserMethod。

谁能告诉我如何在将 inputFile[line:line + chunkSize] 传递给解析器后删除它的元素?

谢谢!

del inputFile[line:line + chunkSize]

将删除这些项目。 但是,您的地图正在逐步浏览整个文件,这让我想知道:您是否在解析它们时尝试删除它们? 这需要映射或解析器更改输入参数,这会带来麻烦。

如果您只是想节省内存使用量,那就有点晚了:您已经将整个文件保存在 InputFile 中。 如果你只需要在解析后清理,那么在解析完成后使用极端形式的delete一次:

del inputFile[:]

如果要提前减少内存需求,则必须备份一个步骤。 与其将整个文件放入列表中,不如尝试制作一个漂亮的输入管道。 您没有发布此代码的上下文,因此我将使用具有几个名称假设的通用案例:

def line_chunk_stream(input_stream, chunk_size):
    # Generator to return a stream of paring units,
    #   <chunk_size> lines each.
    # To make sure you could check the logic here,
    #   I avoided several Pythonic short-cuts.
    line_count = 0
    parse_chunk = []
    for line in input_stream:
        line_count += 1
        parse_chunk.append(line)
        if line_count % chunk_size == 0:
            yield parse_chunk
            del parse_chunk[:]
input_stream = open("source_file", 'r')
parse_stream = line_chunk_stream(input_stream, chunk_size)
parserMethod(parse_stream)

我希望其中至少有一个可以解决您的根本问题。

相关内容

  • 没有找到相关文章

最新更新