gpt4 book ai didi

python - 并行迭代文档行

转载 作者:行者123 更新时间:2023-12-01 09:27:35 25 4
gpt4 key购买 nike

我有一个名为words的文档,每一行都有一个新单词。我想将这些单词中的每一个变成其组成字符的列表。我通过执行 list(x) 来做到这一点,其中 x 是单词。

这就是我正在做的事情,但我想要一种并行化的方法:

split = []
with open('wordprob.txt','rt') as lines:
for line in lines:
split.append(list(line))

我使用这种方法,这样我就不必将整个文件(超过 3 GB)加载到内存中。当通过首先加载文件进行并行化时,我的内存使用量超过了 16 GB。

如何并行化它而不将文件加载到内存中,就像上面的循环一样?

谢谢!

编辑:下面指出列表将占用大量内存。相反,我如何将每个字符列表(最初来自单个单词)作为空格分隔的字符串存储在新文档的新行上。再次,我正在寻找并行解决方案。

最佳答案

如果我正确理解问题,您有一个文件,例如

sushi
banana
sujuk
strawberry
tomato
pho
ramen
manaqish

并且您想要生成一个新文件,如下所示:

s u s h i
b a n a n a
s u j u k
s t r a w b e r r y
t o m a t o
p h o
r a m e n
m a n a q i s h

然后你可以编写一个简单的 stdin-stdout 程序,例如

import sys
for line in sys.stdin:
sys.stdout.write(' '.join(list(line)))

如果所有数据都写入同一个文件,那么即使您并行化,每个线程或进程也会竞争写入同一个输出文件。

如果您确实想要并行化并且想要坚持使用 Python,则可以使用 Hadoop Streaming。你的工作将只是 map 绘制者的工作;事实上映射器就是上面的三行脚本。但我不确定这会给你带来多大好处,除非你的数据集大得离谱。转变非常简单,但请随意介绍一下这份工作,看看是否能从中受益匪浅。

我认为 3GB 不是很多,但这在 Hadoop(或者 children 现在使用的任何东西)中可能是一个有趣的练习。

关于python - 并行迭代文档行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50243495/

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