python多线程中join的用法
来源:互联网 发布:信鸽客户数据搜索专家 编辑:程序博客网 时间:2024/06/05 18:56
python中多线程join是用来阻塞主线程的。
看下面的例子:
def fast(): print "in fast" sleep(10) print "done in fast"def slow(): print "in slow" sleep(15) print "done in slow"
一个运行快,一个运行慢
def main(): start=datetime.datetime.now() threads = [] f = [fast, slow] l = len(f) for i in range(l): t=threading.Thread(target=f[i],args=()) threads.append(t) for i in range(l): threads[i].start() for i in range(l): threads[i].join() print threads[i].getName() end=datetime.datetime.now() print end-start print "Done on main" exit()
请问上面的函数输出的是什么? 朋友们可以先想一下,如果对了,说明你掌握了join的用法了。
正确的输出是:
in fastin slowdone in fastThread-1done in slowThread-20:00:15.001000Done on main
如果没有join的那一段,那么 Done on main 将会在in slow后面就执行。
而答应线程名字那条语句,则是需要等到第一个线程的join结束后才能够输出。
那么如果把上面fast和slow的时间改一下,改成:
def fast(): print "in fast" sleep(15) print "done in fast"def slow(): print "in slow" sleep(10) print "done in slow"
那么这次输出的有是什么呢?
in fastin slowdone in slowdone in fastThread-1Thread-20:00:15.001000Done on main
而本身后台同时运行着2个线程,join并没有把线程2停止了。所以在线程1还在运行的时候(需要15s),而第二个线程 已经完成的输出结果,因为第二个线程运行时间只有10s。 所以也就是线程1join结束后,打印出线程1的名字, 这会线程2的名字马上就会被打印出来,并没有等待10s的时间。
http://30daydo.com/
阅读全文
0 0
- python多线程中join的用法
- python多线程中join和setDaemon的用法
- python中join()的用法
- Python中 ''.JOIN()的用法
- python中join的用法
- Java多线程中join的用法
- python 中join 、split函数的用法
- Python中join()函数的用法
- python中join()和split()的用法
- Python中join的简单用法
- Python中join()函数的用法
- python中join()函数的用法
- python 中join 和 split的用法
- java多线程中join用法
- python多线程编程以及join,setDaemon,线程锁的用法
- python 多线程中的守护线程与join的用法
- python 多线程中的守护线程与join的用法
- python join的用法
- 向Unreal编辑器关卡中拖入自定义类型
- centos7下tomcat7 或tomcat8启动超慢原因
- HUST 1625 Chessboard 并查集
- React组件生命周期过程说明
- python基础之文件操作
- python多线程中join的用法
- blog 第一天
- centos 7.1安装docker
- 理解图像卷积操作的意义
- Ajax
- ubuntu系统快捷键(更新ing)
- python基础之模块之sys模块
- 广告框页面随意滚动特效
- XML文档类型定义---XML Schema