进程与线程
来源:互联网 发布:coco文字识别软件 编辑:程序博客网 时间:2024/04/28 05:25
最简多线程示例
import threadingdef run(num): print('task ', num) time.sleep(2)t1 = threading.Thread(target=run, args=('t1',))t2 = threading.Thread(target=run, args=('t2',))t1.start()t2.start()
多线程类【继承式写法】
clas s Mythread(threading.Thread): def __init__(self, num): super(Mythread, self).__init__() self.num = num def run(self): print('task ', self.num)t1 = Mythread('t1')t2 = Mythread('t2')t1.start()t2.start()
默认情况 主线各不会等待子线程执行完
def run(num): print('task ', num) time.sleep(2) print('执行完? %s', num)ta = time.time()# tobjs = []for i in range(20): t = threading.Thread(target=run, args=(i,)) t.start()print( time.time() - ta)
等待子线程执行完成,实际上这就成为了串行执行
tobjs = []for i in range(4): t = threading.Thread(target=run, args=('t_%s' %i,)) t.setDaemon(True) #把当前线程设置为守护线程 t.start() tobjs.append(t)for t in tobjs: t.join()
循环方式多线程
import threadingimport time, osdef run(n): print('task ', n, threading.current_thread()) time.sleep(2)a = time.time()tobjs = []for i in range(4): t = threading.Thread(target=run, args=('t_%s' %i,)) # 把当前线程设置为守护线程 一定要在start之前 t.setDaemon(True) t.start()# tobjs.append(t)# for t in tobjs:# t.join()# 可替换joinwhile threading.active_count() != 1: passelse: print('----all threads done----')print('use_time: ', time.time() - a, threading.current_thread(),threading.active_count())
1>. 守护线程隶属于主线程 2>. 此模式下,程序会等待主线程执行完毕就退出;不会等待守护线程执行完成,再退出。
阅读全文
0 0
- 进程与线程线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 线程与进程
- 线程与进程
- 进程与线程
- 进程与线程
- 线程与进程
- 进程与线程
- Python中的反射机制
- 关于java文件导出jar文件的问题,区别开 jar file 和 runnable jar file
- 学习-Socket编程讲解
- centos7下 lamp环境部署及zabbix的安装
- CodeForces
- 进程与线程
- 天天学Linux命令5--mkdir命令
- phpstorm破解方法(如果是评估期过期了只能离线破解就是我这样的方法)
- C#委托详解(delegate)
- Scala入门学习之隐式转换和隐式参数
- JSON与XML的区别比较
- 计算模拟I2C的传输速率
- Non-resolvable parent POM for cn.e3:e3-manager:0.0.1-SNAPSHOT: Could not find artifact cn.e3:e3-pare
- XSnow