processPool.map(parserMethod, ((inputFile[line:line + chunkSize], sharedQueue) for line in xrange(0, lengthOfFile, chunkSize)))
有人能告诉我如何在传递给parserMethod之后删除inputFile [line:line + chunkSize]的元素吗?
谢谢!
答案 0 :(得分:0)
del inputFile[line:line + chunkSize]
将删除这些项目。但是,你的地图正在逐步浏览整个文件,这让我想知道:你是否试图在解析时删除它们?这需要地图或解析器来改变输入参数,这会引起麻烦。
如果您只是想节省内存使用量,那就有点晚了:您已经将整个文件保存在InputFile中。如果您只需要在解析后进行清理,那么在解析完成后,请使用极端形式的 del ete:
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)
我希望其中至少有一个能解决您的根本问题。