当前位置:首页 > 开发 > 系统架构 > shell > 正文

Linux Shell实现"多进程"编程

发表于: 2012-09-02   作者:cloudmail   来源:转载   浏览:
摘要:   单进程模式代码:   #!/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

 

单进程模式代码:

 

#!/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?

 

 

Linux Shell实现"多进程"编程

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号