【发布时间】:2015-02-28 21:18:43
【问题描述】:
所以我在 BASH 中有这个我试图理解的函数 - 它使用并行性:
function get_cache_files() {
## The maximum number of parallel processes. 16 since the cache
## naming scheme is hex based.
local max_parallel=${3-16}
## Get the cache files running grep in parallel for each top level
## cache dir.
find $2 -maxdepth 1 -type d | xargs -P $max_parallel -n 1 grep -Rl "KEY:.*$1" | sort -u
} # get_cache_files
所以我的问题:
- 评论:“16 因为缓存命名方案是基于十六进制的” - 命名示例如下:
php2-mindaugasb.c9.io/5c/c6/348e9a5b0e11fb6cd5948155c02cc65c- 当命名方案基于 HEX(十六进制系统)时,为什么使用 16 个进程很重要? - XARGS 的 -P 选项适用于 max-procs:
一次最多运行 max-procs 个进程;默认值为 1。如果 max-procs 为 0,xargs 将一次运行尽可能多的进程。将 -n 选项与 -P 一起使用;否则很可能只有一名执行官会被完成。
好的,那么:“xargs -P $max_parallel -n 1”是正确的,将启动 16 个进程?或者 n 也应该等于 $max_parallel ?
-
据我了解,并行化的条件是:
- 将对其执行操作的资源的独立性(如将对其执行操作的类似文件);
- 在独立的计算机上执行操作;
还有哪些其他条件可以并行化?
【问题讨论】:
标签: linux bash shell command-line-arguments xargs