【问题标题】:parallel call multiple bash functions并行调用多个 bash 函数
【发布时间】:2016-03-27 15:08:00
【问题描述】:

我已经阅读了http://www.gnu.org/software/parallel/man.html#example__calling_bash_functions 的示例,但是是否可以使用 gnu 并行调用 2 个没有传递给它们的任何变量的函数?

例子

a() {
  echo "download a"
  wget fileA
}

b() {
  echo "download b"
  wget fileB
}

并使用并行调用ab这两个函数?

【问题讨论】:

  • 我认为你必须制作两个不同的脚本并并行调用它们。
  • 不使用 GNU 并行,你能在后台调用函数吗?喜欢a &; bb 同时运行a

标签: bash shell parallel-processing gnu-parallel


【解决方案1】:

在后台运行它们。然后等待他们完成。

a() {
  echo "download a"
  wget fileA
}

b() {
  echo "download b"
  wget fileB
}

a &
b &
wait # waits for all background processes to complete

【讨论】:

    【解决方案2】:

    如果你坚持使用 GNU Parallel:

    a() {
      echo "download a"
      wget fileA
    }
    
    b() {
      echo "download b"
      wget fileB
    }
    export -f a
    export -f b
    parallel ::: a b
    

    如果您需要对 shell 中的变量进行读取访问,您可以导出变量或使用 env_parallel

    【讨论】:

    • 如果你的函数需要从上下文中访问一些变量,这将不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多