processPool.map(parserMethod, ((inputFile[line:line + chunkSize], sharedQueue) for line in xrange(0, lengthOfFile, chunkSize)))
- 在这里,我将控制权传递给带有参数输入文件[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)
我希望其中至少有一个可以解决您的根本问题。