首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有固定顺序的并行执行

具有固定顺序的并行执行
EN

Stack Overflow用户
提问于 2019-04-04 13:44:05
回答 1查看 37关注 0票数 1
代码语言:javascript
复制
#!/bin/bash
doone() {
    tracelength="$1"
    short="$2"
    long="$3"
    ratio="$4"
    echo "$tracelength $short $long $ratio" >> results.csv
    python3 main.py "$tracelength" "$short" "$long" "$ratio" >> file.smt2
    gtime -f "%U" /Users/Desktop/optimathsat-1.5.1-macos-64-bit/bin/optimathsat < file.smt2
}
export -f doone
step=0.1
parallel doone \
         ::: 200 300 \
         :::: <(seq 0 $step 0.2) \
         ::::+ <(seq 1 -$step 0.8) \
         :::: <(seq 0 $step 0.1) \
         ::: {1..2} &> results.csv

我需要在results.csv中给出的数据是有序的。每个作业都输出它的输入,这是开头提到的3个变量:$tracelength$short$long$ratio,然后是该作业的相关执行时间;所有这些都在一行中。到目前为止,我的结果如下所示:

代码语言:javascript
复制
0.00
0.00
0.00
0.00
200 0 1 0
200 0 1 0.1
200 0.1 0.9 0

我怎样才能订好订单?为什么执行时间总是0.00file.smt2是一个大文件,执行时间绝不可能是0.00

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-05 05:42:54

并行地追加到同一个文件确实是个坏主意。你会在整个地方都有比赛条件。

您正在使用results.csvfile.smt2来完成这一任务。

因此,如果您在doone中写入一个文件,请确保它具有唯一的名称(例如,通过使用myfile.$$)。

要查看是否存在争用条件,可以让GNU并行一次运行一个作业:parallel --jobs 1

如果问题因此而消失,那么您很可能可以通过:

代码语言:javascript
复制
doone() {
    tracelength="$1"
    short="$2"
    long="$3"
    ratio="$4"
    # No >> is needed here, as all output is sent to results.csv
    echo "$tracelength $short $long $ratio"
    tmpfile=file.smt.$$
    cp file.smt2 $tmpfile
    python3 main.py "$tracelength" "$short" "$long" "$ratio" >> $tmpfile
    # Be aware that the output from gtime and optimathsat will be put into results.csv - making results.csv not a CSV-file
    gtime -f "%U" /Users/Desktop/optimathsat-1.5.1-macos-64-bit/bin/optimathsat < $tmpfile
    rm $tmpfile
}

如果results.csv只是一个日志文件,请考虑使用parallel --joblog my.log

如果这个问题没有解决,那么你的问题就在别处。在这种情况下,请创建一个MCVE (https://stackoverflow.com/help/mcve):您的示例是不完整的,因为您引用了file.smt2optimathsat,而没有提供它们,因此我们无法运行您的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55517508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档