gpt4 book ai didi

Python 多处理 map_async

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:02 25 4
gpt4 key购买 nike

我想跳过从 map_async 返回的结果.它们在内存中增长,但我不需要它们。

这是一些代码:

def processLine(line):
#process something
print "result"
pool = Pool(processes = 8)
for line in sys.stdin:
lines.append(line)
if len(lines) >= 100000:
pool.map_async(processLine, lines, 2000)
pool.close()
pool.join()

当我必须处理具有数亿行的文件时,python 进程在内存中增长到几千兆字节。我该如何解决?

感谢您的帮助:)

最佳答案

您的代码有一个错误:

for line in sys.stdin:
lines.append(line)
if len(lines) >= 100000:
pool.map_async(processLine, lines, 2000)

这要等到 lines 累积超过 100000 行。之后,pool.map_async 将在 100000 多行的整个列表上被调用,每增加一行

目前还不清楚你到底想做什么,但是如果您不需要返回值,请使用 pool.apply_async,而不是 pool.map_async。也许是这样的:

import multiprocessing as mp

def processLine(line):
#process something
print "result"

if __name__ == '__main__':
pool = mp.Pool(processes = 8)
for line in sys.stdin:
pool.apply_async(processLine, args = (line, ))
pool.close()
pool.join()

关于Python 多处理 map_async,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13916786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com