【问题标题】:Replacing a bash for loop for a parallel procell为并行进程替换 bash for 循环
【发布时间】:2013-10-07 14:27:10
【问题描述】:

我真的很难重做一个 bash for 循环以并行运行。

循环是这样的:

for i in `cat names`
do
    cp $i.pqr dum.pqr
    apbs parameters.in
    mv dum.grd $i.grd
    rm dum.grd
done

我试过这个没有成功。它告诉我“需要 -c 的参数”

for i in `cat names`
do
    cp $i.pqr dum.pqr
    parallel -j8 apbs parameters.in
    mv dum.grd $i.grd
    rm dum.grd
done

谁能告诉我我的错误?

【问题讨论】:

  • 确切的错误信息是什么? for 循环真的需要重现问题吗?

标签: bash loops for-loop parallel-processing gnu-parallel


【解决方案1】:

我假设 apbs 将“dum.pqr”转换为“dum.grd”。所以如果2个apbs同时运行,它们会覆盖dum.grd。您需要以某种方式确保名称是唯一的。也许使用目录:

func my_apbs {
  mkdir $1
  cp $1.pqr $1/dum.pqr
  cd $1
  apbs parameters.in
  mv dum.grd ../$1.grd
  cd ..
  rm -r $1
}
export -f my_apbs
parallel my_apbs :::: names

你没有写你是否看过介绍视频https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1或浏览教程:http://www.gnu.org/software/parallel/parallel_tutorial.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2022-01-14
    • 2011-09-22
    • 2015-05-09
    相关资源
    最近更新 更多