【发布时间】:2012-06-15 17:37:20
【问题描述】:
我正在尝试使用 xargs 来并行调用更复杂的函数。
#!/bin/bash
echo_var(){
echo $1
return 0
}
seq -f "n%04g" 1 100 |xargs -n 1 -P 10 -i echo_var {}
exit 0
这会返回错误
xargs: echo_var: No such file or directory
欢迎任何关于如何使用 xargs 来完成此任务的想法或任何其他解决方案。
【问题讨论】:
-
危险,user1148366,危险!不要使用 bash 进行并行编程——你会遇到很多问题。使用 C/C++ 和 pthread,或 Java 线程,或任何让您对自己正在做的事情进行长时间思考的东西,因为并行编程需要大量思考才能做到正确。
-
@DavidSouther 如果任务是独立的,例如将所有这些图片文件转换为 png,那么不用担心。当你有同步(而不是等待所有完成)和通信时,它就会变得混乱。
-
@DavidSouther - 我是一名长期的 Java 开发人员,最近一直在使用 groovy。而且我继续告诉人们:朋友不要让朋友写 bash 脚本。然而,我发现自己在看这个帖子/解决方案,因为(悲伤的脸:()我在 bash 中从事并行处理。我可以很容易地在 groovy/java 中做到这一点。糟糕!