Linux Shell实现"多进程"编程

 

单进程模式代码:

 

#!/bin/sh

plus=0;
t1=`date +%s`
sub_fun()
{
	index="${1}"
	for i in {1..4}; do
		echo "sub_fun $index, loop:$i"
		plus=$[$plus + 1]
		sleep 1
	done
}

echo "Begin run on time: `date +%T`"
for j in {1..3}; do
{
	sub_fun "$j"
}
done

t2=`date +%s`
echo "End run on time: `date +%T`, plus sum:$plus, run time:$[ $t2 - $t1 ]"
 

 

 

单进程运行结果:

 

Begin run on time: 18:56:01
sub_fun 1, loop:1
sub_fun 1, loop:2
sub_fun 1, loop:3
sub_fun 1, loop:4
sub_fun 2, loop:1
sub_fun 2, loop:2
sub_fun 2, loop:3
sub_fun 2, loop:4
sub_fun 3, loop:1
sub_fun 3, loop:2
sub_fun 3, loop:3
sub_fun 3, loop:4
End run on time: 18:56:13, plus sum:12, run time:12
 

 

 

多进程模式代码:

 

#!/bin/sh

plus=0;
t1=`date +%s`
file_path="file.eml"
sub_fun()
{
	index="${1}"
	file_path="${2}"
	for i in {1..4}; do
		echo "[`date +%T`]sub_fun $index, file:$file_path, loop:$i"
		plus=$[$plus + 1]
		sleep 1
	done
}

echo "Begin run on time: `date +%T`"
for j in {1..3}; do
{
	sub_fun "$j" "$file_path$j"
} &
done

wait
t2=`date +%s`
echo "End run on time: `date +%T`, plus sum:$plus, run time:$[ $t2 - $t1 ]"
 

 

 

多进程运行结果:

 

Begin run on time: 20:55:40
[20:55:40]sub_fun 1, file:file.eml1, loop:1
[20:55:40]sub_fun 2, file:file.eml2, loop:1
[20:55:40]sub_fun 3, file:file.eml3, loop:1
[20:55:41]sub_fun 1, file:file.eml1, loop:2
[20:55:41]sub_fun 2, file:file.eml2, loop:2
[20:55:41]sub_fun 3, file:file.eml3, loop:2
[20:55:42]sub_fun 1, file:file.eml1, loop:3
[20:55:42]sub_fun 2, file:file.eml2, loop:3
[20:55:42]sub_fun 3, file:file.eml3, loop:3
[20:55:43]sub_fun 2, file:file.eml2, loop:4
[20:55:43]sub_fun 1, file:file.eml1, loop:4
[20:55:43]sub_fun 3, file:file.eml3, loop:4
End run on time: 20:55:44, plus sum:0, run time:4
 

 

奇怪,为什么多进程模式下,plus最后结果是0?

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值