Shell(6): 多线程操作及线程数
任务需要:当我需要对一个文件夹中的文件,分别压缩的时候:
原始的代码:
1 #!/usr/bin/shell 2 function getdir(){ 3 for element in `ls $1` 4 do 5 #echo $element 6 dir_or_file=$1$element 7 8 #echo $dir_or_file 9 if [ -d $dir_or_file ] 10 then 11 #echo tar cvf tar_data/$element.tar $dir_or_file 12 `zip -q -r ../tar_data/$element.zip $dir_or_file` 13 fi 14 done 15 } 16 root_dir="" 17 getdir $root_dir
多线程压缩的代码:
改成多线程实现非常简单,只需要在do后面的大括号加 & 符号,在done后面加一个wait,表示父进程等待子进程退出后再退出。
在linux中,在命令的末尾加上&
符号,则表示该命令将在后台执行,这样后面的命令不用等待前面的命令执行完就可以开始执行了。示例中的循环体内有多条命令,则可以以{}
括起来,在大括号后面添加&
符号。
1 #!/usr/bin/shell 2 function getdir(){ 3 for element in `ls $1` 4 do 5 { 6 #echo $element 7 dir_or_file=$1$element 8 9 #echo $dir_or_file 10 if [ -d $dir_or_file ] 11 then 12 #echo tar cvf tar_data/$element.tar $dir_or_file 13 `zip -q -r ../tar_data/$element.zip $dir_or_file` 14 fi 15 }& 16 done 17 wait 18 } 19 root_dir="" 20 getdir $root_dir
控制多线程个数的代码:
#!/usr/bin/shellTHREAD_NUM=3 #定义描述符为9的管道 mkfifo tmp exec 9<>tmp #预先写入指定数量的换行符,一个换行符代表一个进程 for ((i=0;i<$THREAD_NUM;i++)) doecho -ne "\n" 1>&9 donefunction getdir(){for element in `ls $1`do{read -u 9{#echo $elementdir_or_file=$1$element#echo $dir_or_fileif [ -d $dir_or_file ]then#echo tar cvf tar_data/$element.tar $dir_or_file`zip -q -r ../tar_data/$element.zip $dir_or_file`fi}&}donewait } root_dir="" getdir $root_dir
参考来源:
http://www.cnblogs.com/signjing/p/7074778.html
http://m.jb51.net/article/51720.htm
Shell(6): 多线程操作及线程数相关推荐
- Shell多线程操作及线程数控制实例
来源:http://www.jb51.net/article/51720.htm 这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数 ...
- linux脚本多线程,Shell多线程操作及线程数控制实例
前言 在业务开发过程中,经常会在后台写一些shell脚本处理数据,但估计很多人不知道shell脚本也可以支持多线程,而且非常简单.本篇文章主要就是介绍shell实现多进程以及进程数量控制. 需求 为了 ...
- Python继承类的方式实现多线程及控制线程数
继承threading.Thread,并重写run方法实现多线程,这里用到logging日志模块是为了输出好看一些,直接print的话会几行叠在一起,不好看: 1 2 3 4 5 6 7 8 9 10 ...
- Qt 多线程基础及线程使用方式
文章目录 Qt 多线程操作 2.线程类QThread 3.多线程使用:方式一 4.多线程使用:方式二 5.Qt 线程池的使用 Qt 多线程操作 应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一 ...
- ITK:设置默认的线程数
ITK:设置默认的线程数 内容提要 输出结果 C++实现代码 内容提要 设置多线程的默认线程数. 还可以通过环境变量ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS设置默认线程 ...
- 最佳线程数和QPS以及RT
最近学习性能优化方面的东西,所以,总结一下: 名词解释 QPS:系统每秒处理的请求数(query per second) RT:系统的响应时间,一个请求的响应时间,也可以是一段时间的平均值. 最佳线程 ...
- Linux C :线程操作和线程同步的多线程并发编程
在这之前可以先看看这边文章了解线程概念,信号量,条件变量,死锁.管程等概念 https://blog.csdn.net/superSmart_Dong/article/details/11666837 ...
- 多线程 空值线程数_【开发者成长】深入理解多线程编程
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 为什么要使用多线程? 防止并发编程出错最好的办法就是不写并发程序 既然多线程编程容易出错,为什么它 ...
- pg多线程更新会发生死锁_何时用多线程?多线程需要加锁吗?线程数多少最合理?...
一.什么时候应该使用多线程? 今天看到一个问题,突然有感而发,想聊下这个话题. 不知道大家有没有想过这个问题,就是什么时候我该使用多线程呢?使用多线程就一定会提升系统性能吗? 1.其实是否应该使用多线 ...
最新文章
- 菜鸡记录-王爽-汇编语言-实验十(编写子程序-解决除法溢出)
- java中ssh如何理解
- 138 条 Vim 命令、操作、快捷键全集
- 09、组策略之软件分发(05)
- 4 种大学生兼职,助你走向经济独立!
- 关于golang的append函数的踩坑
- html推箱子怎么清除走过的,第九讲:HTML5该canvas推箱子原型实现
- 格密码教程(三):基础域概念,体积等;阿达马不等式,行列式
- 智能型炉温测试仪kic x5软件,X5系列_KIC-7通道/9通道/12通道炉温测试仪
- Nginx(一)-- 初体验
- 中国超级计算机扩大领先优势:TOP500总量首次超越美国
- OpenGL基础24:聚光灯
- 【嵌入式】第一次大作业_记录环境温度并存入数据库
- Flash 第八章 形状补间
- firefox如何下载播放的视频
- 【scrapy】scrapy按分类爬取豆瓣电影基础信息
- 23个海外求职找各种工作的招聘网站
- 阿尔伯塔大学计算机专业世界排名,加拿大学生最满意的TOP20大学排名
- android 字体修改颜色代码,Android SearchView 修改字体颜色
- 2.1微信小程序简介
热门文章
- 前嗅ForeSpider教程:采集图片/视频/资源文件的链接地址 1
- c#.net利用RNGCryptoServiceProvider产生任意范围强随机数的办法
- IOS中延时执行的几种方式的比较
- Linux平台 Oracle 11gR2 RAC安装Part1:准备工作
- vMotion、SvMotion、HA和FT的详细对比说明
- java 对象访问权限_Java面向对象--访问权限
- java(21) - 注解详解
- Java学习系列(十七)Java面向对象之开发聊天工具
- 需要使用Git branch switch 的情况Git stash的使用时机
- Visio 中如何画实现接口的连线