【发布时间】:2013-04-09 04:50:36
【问题描述】:
我有一个包含约 50k 个文件的目录。每个文件有 ~700000 行。我编写了一个 awk 程序来读取每一行并仅在出现错误时打印。一切都运行得很好,但是花费的时间很长 - 大约 4 天!!!!有没有办法减少这个时间?我们可以使用多个内核(进程)吗?以前有人试过吗?
【问题讨论】:
-
只有在出现错误时才打印?这是否只是在文件中寻找某种模式?您是否检查过 CPU 使用情况以确认您确实受 CPU 限制?
-
是的。仅在出现错误时打印 - 只是为了减少 IO。我没有检查 CPU 使用率。即使它不是 CPU 密集型的,我们如何才能将这个操作并行化?
-
听起来你受 I/O 限制,在这种情况下,多个进程可能无济于事。此外,如果您只是在查找错误,请考虑使用
grep。 -
Parallelize Bash Script 的可能重复项
-
我不能使用 grep '因为某些比较取决于分布在同一文件中多行的参数值。但是让我看看你提供的另一个指针。谢谢您的帮助。在尝试多次从 bash 调用此 awk 脚本后,我会回来 :)