shell中同时实现for循环遍历多个数组的多线程

shell中同时实现for循环遍历多个数组的多线程,第1张

1、实现多线程
for ((i=0; i<=8; i++))
do
{
    XXXXXX
}&
done

Note:主要就是对for循环中要执行的命令,用{}&包含起来,注意是大括号+&,不要少了&(没打错)。

参考如下:

shell中如何实现多线程_丷刘大胆儿的博客-CSDN博客_shell 多线程

2、实现多变量循环
list0=${data_dir}list/test_split/test0_normal.txt
list1=${data_dir}list/test_split/test1_crowd.txt
list2=${data_dir}list/test_split/test2_hlight.txt
list3=${data_dir}list/test_split/test3_shadow.txt
list4=${data_dir}list/test_split/test4_noline.txt
list5=${data_dir}list/test_split/test5_arrow.txt
list6=${data_dir}list/test_split/test6_curve.txt
list7=${data_dir}list/test_split/test7_cross.txt
list8=${data_dir}list/test_split/test8_night.txt
list=($list0 $list1 $list2 $list3 $list4 $list5 $list6 $list7 $list8)

out0=./output/out0_normal.txt
out1=./output/out1_crowd.txt
out2=./output/out2_hlight.txt
out3=./output/out3_shadow.txt
out4=./output/out4_noline.txt
out5=./output/out5_arrow.txt
out6=./output/out6_curve.txt
out7=./output/out7_cross.txt
out8=./output/out8_night.txt
out=($out0 $out1 $out2 $out3 $out4 $out5 $out6 $out7 $out8)

for((i=0; i<=8; i++))
do
{
  ./evaluate -a $data_dir -d $detect_dir -i $data_dir -l ${list[i]} -w $w_lane -t $iou -c $im_w -r $im_h -f $frame -o ${out[i]}
}&
done

wait

cat ./output/out*.txt>./output/${exp}_iou${iou}_split.txt

Note:

1)把多个变量放到一个数组中,注意使用$

2)注意命令中的对数组成员的正确引用${list[i]}

参考如下:

linux shell遍历多个数组_HackerTom的博客-CSDN博客_shell 多个数组

3、Linux 中使用的GPU的指定

这个在python中经常用到,例如CUDA_VISIBLE_DEVICES=1 python run_file.py。

但这里说的CUDA_VISIBLE_DEVICES=1,该命令不仅适用于执行python文件的情况,而且是适用于linux所有执行文件的情况下,例如执行shell脚本,CUDA_VISIBLE_DEVICES=2 ./autotest_culane.sh enet_baseline_culane test ./output。(该shell脚本中调用cmd来执行含有opencv代码的可执行程序)

因此,这里说是Linux中使用GPU的指定。

Over!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存