-6ren">
gpt4 book ai didi

python - 使用并行运行 html2text

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:39 26 4
gpt4 key购买 nike

我正在使用来自 Githubhtml2text在其中,我能够使用 for file in *.html; 在我的文件夹中的所有 .html 文件上运行它;做 html2text "$file"> "$file.txt";完成了 但是有点慢。如何在我所有的 .html 文件上并行使用 html2text?

最佳答案

原答案是:

for file in *.html
do
html2text "$file" > "$file.txt" &
done

命令末尾的 & 符号告诉 bash 将命令置于后台并将控制返回到调用位置。

不确定它是否适用于 1000 多个文件,因为它会为每个文件生成一个新进程。


但是,由于 OP 要求它适用于数百万个文件,这显然是不可行的,因为它会产生数百万个后台进程,可能会挂起机器。

您必须明白,处理数百万个文件需要更多时间,具体取决于您的硬件和操作系统限制。技术上比单个文件多一百万次。

上面的答案似乎立即对 100 个文件有效的原因是你立即得到了命令提示符。但是,这并不意味着工作在此时已经完成,因为所有这些后台进程可能仍在工作直到它们完成,即使您可以同时做其他事情。

理论上您可以将文件列表分成 block 并逐 block 工作,但是,在测试这种方法之后,我认为您获得最终结果的速度不会比并行快得多。

因此,根据您必须处理的文件数量,我建议像您自己发现的那样并行运行,不过可能会显着调整并行作业的数量。强>

所以这样的事情应该可行:

find . -type f -name \*html > FLIST
parallel --a FLIST -j 1000 'html2text {} > {.}.txt'

请注意,这是 OP 的 Python 版本的 html2text 的语法。对于使用例如的选项。 Ubuntu 发行版可用 html2text 二进制包,请参阅之前编辑的答案。

这将以 1000 个并行文件的 block 来处理您的 html,而不使用管道(有时会大大减慢速度)。

如果这太慢,请尝试将 -j 增加到 10000 左右——但随后您将冒险进入硬件/操作系统限制,即始终产生 10000 个并行进程。

关于python - 使用并行运行 html2text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184001/

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