我有很多文本处理脚本可以应用于很多文本文件。我正在编写一个批处理脚本(在Win 7上)来启动它们并遍历包含文本文件的目录和子目录。实际上,我想知道是否有更好的迭代方法或在一次迭代中执行更多关于效率的更多进程:
变体A
for x in y
process 1 on x
process 2 on x
process 3 on x
或变体B
for x in y
process 1 on x
for x in y
process 2 on x
for x in y
process 3 on x
提前谢谢!
答案 0 :(得分:1)
这完全取决于循环的大小,进程的数量和这些进程所需的资源(以及您使用的编程语言;)) 解决这个问题的最佳方法是创建一个测试脚本,同时给出两种方法,看看whitch是最快的。
如果差异很小,我会选择最干净的解决方案,只使用1个循环执行多个进程...因为它更容易阅读。
答案 1 :(得分:1)
这取决于几个因素,因此没有答案是肯定的。但是,我认为您采取的方法主要取决于您正在进行的处理。
让我们说process1
改变其输入,process2
和process3
也是如此。如果可能,您可以编写处理,以便他们可以stdin
处理,处理它,并向stdout
提供输出 - 这样您可以这样做:
for each x in y do
process1 x | process2 | process3 > x_new
overwrite x with x_new
每个文件只能被读入一次,通过所有进程传送到"做他们的事情",并在最后被替换。
但正如我所说,这完全取决于处理实际上做了什么。