【发布时间】:2020-09-10 18:25:19
【问题描述】:
在 GNU Parallel 中,可以使用 -j 选项指定并发作业的数量。
是否可以获得运行作业的线程的 ID?使用线程ID,我的意思是一个数字 我的机器上有 1 到 12 个线程,有 12 个线程。截至目前,我使用以下解决方法:
doit() {
let var=$1*12+$2
echo $var $2
}
export -f doit
for ((i=0;i<2;++i))
do
parallel -j12 doit ::: $i ::: {1..12}
done
这有一个问题,即循环的每次迭代都等待所有 12 个线程完成。 我只对不同时运行具有相同线程 ID 的迭代感兴趣。
我这样做的动机是每个线程都在 12 个文件之一上使用写锁。我正好有 12 个文件,如果一个文件上的一个线程完成,下一个线程可以立即再次使用这个文件。
【问题讨论】:
-
试试jobslot号
parallel -j12 -k echo {%} ::: {1..36}
标签: gnu-parallel