主页 > Linux教程 > 正文

bash shell完结并发多进程操作

bash shell完结并发多进程操作

前语

现在我把握的根本言语,php(最为了解,项目里代码都是用其完结),bash shell(运维利器),c(acm专用),这里边能完结多线程的形似只要c,可是我c仅仅用来学习和完结算法和数据结构,因而作业中我想要模仿多进程并发操作,就只能依托bash shell脚本了

技能点

shell脚本里完结并发操作,需求用到

for循环

&后台运转符

wait等候一切子进程完毕

思路

咱们能够经过写一个for循环,操控每次需求批量操作的次数,

然后封装一个办法,办法里进行批量操作,并将此办法用&符号放在后台运转

每个循环完毕前用wait函数,保证当时批量处理操作悉数完结

示例

咱们预备批量的履行创立目录操作,目录名称为数字,从1开端到100,每次批量创立20个

无并发时

代码如下:

[html]

#!/bin/bash

#开端时刻

begin=$(date +%s)

#测验根目录

root_dir="/home/wzy/wzy_scripts/file_scripts/test"

if [ ! -d $root_dir ]; then

mkdir -p $root_dir

fi

cd $root_dir

#循环创立10000个目录

for ((i=0; i<10000; ))

do

mkdir $i

i=$(expr $i + 1)

done

#完毕时刻

end=$(date +%s)

spend=$(expr $end - $begin)

echo "花费时刻为$spend秒"

运转时刻:


并发操作

咱们每次并发创立200个目录,因而循环履行50次即可完结创立10000个目录的作业

代码如下:

[html]

#!/bin/bash

#开端时刻

begin=$(date +%s)

#测验根目录

root_dir="/home/wzy/wzy_scripts/file_scripts/test"

if [ ! -d $root_dir ]; then

mkdir -p $root_dir

fi

cd $root_dir

#批量创立目录函数

function create_dir()

{

mkdir $1

}

#循环创立10000个目录

count=10000

rsnum=200

cishu=$(expr $count / $rsnum)

for ((i=0; i<$cishu;))

do

start_num=$(expr $i \* $rsnum + $i)

end_num=$(expr $start_num + $rsnum)

for j in `seq $start_num $end_num`

do

create_dir $j &

done

wait

i=$(expr $i + 1)

done

#完毕时刻

end=$(date +%s)

spend=$(expr $end - $begin)

echo "花费时刻为$spend秒"

主要是分页处理和&以及wait的运用

运转时刻:


总结

经过&、wait和for循环来进行并发操作能明显的进步功率,咱们能够参阅这个办法用在自己的日常作业中,我是在创立多个mysql库的时分把握了这个办法!


上一篇:淘宝开源其体系监控东西Tsar
下一篇: mysql5.6仿制新特性

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854