python 的 Thread.join方法
一、join 方法的主要作用是阻塞, 阻塞的对象是谁?
答:阻塞的对象是主线程,可以达到控制主线程什么时候结束的作用。
1、没有join
此时主线程和子线程相当于齐头并进,主线程不会等待子线程执行完了再结束,即不会阻塞
实验代码:
# coding: utf-8
# 测试多线程中join的功能
import threading, timedef doWaiting():print('start waiting1: ' + time.strftime('%H:%M:%S') + "\n" )time.sleep(3)print('stop waiting1: ' + time.strftime('%H:%M:%S') + "\n")def doWaiting1():print('start waiting2: ' + time.strftime('%H:%M:%S') + "\n")time.sleep(8)print('stop waiting2: ', time.strftime('%H:%M:%S') + "\n")if __name__ == '__main__':tsk = []thread1 = threading.Thread(target = doWaiting)thread1.start()tsk.append(thread1)thread2 = threading.Thread(target = doWaiting1)thread2.start()tsk.append(thread2)# print('start join: ' + time.strftime('%H:%M:%S') + "\n")# for tt in tsk:# tt.join()print('end main thread: ' + time.strftime('%H:%M:%S') + "\n")
执行结果及分析:
2、有join
当主线程内的子线程都start后,主线程会阻塞并等待子线程执行完才继续执行,直观的表现是:子线程都start后,主线程若还有未执行的代码,此时不会继续执行剩余代码,而是等待子线程都执行完后再执行
if __name__ == '__main__':tsk = []thread1 = threading.Thread(target = doWaiting)thread1.start()tsk.append(thread1)thread2 = threading.Thread(target = doWaiting1)thread2.start()tsk.append(thread2)print('start join: ' + time.strftime('%H:%M:%S') + "\n")for tt in tsk:tt.join()print('end main thread: ' + time.strftime('%H:%M:%S') + "\n")
执行结果及分析:
3、有join且传入阻塞时间time
主线程最长阻塞时间: 子线程数*join传入参数time,当每个子线程都执行了time时间甚至更长时,主线程才有可能达到这么长的阻塞时间。
注意:即使是主线程结束阻塞后执行完剩余代码,子线程也会继续执行,而不会随着主线程的结束而终止。
if __name__ == '__main__':tsk = []thread1 = threading.Thread(target = doWaiting)thread1.start()tsk.append(thread1)thread2 = threading.Thread(target = doWaiting1)thread2.start()tsk.append(thread2)print('start join: ' + time.strftime('%H:%M:%S') + "\n")for tt in tsk:tt.join(3)print('end main thread: ' + time.strftime('%H:%M:%S') + "\n")
结果分析;
python 的 Thread.join方法相关推荐
- java并发编程之thread.join()方法详解
thread.join()方法的作用:保证线程的执行结果的可见性.原理是通过阻塞主线程实现的. 代码Demo如下: public class ThreadJoinDemo {public static ...
- 高并发编程-Thread#join方法的使用及使用场景分析
文章目录 含义 方法及示例 void join() void join(long millis) join(long millis, int nanos) 使用场景分析 含义 翻看下源码的注释: Wa ...
- python中的join方法
描述 Python中的join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 'sep'.join(sequence) 参数 sequence:要连接的元素序列,可以是元组.列 ...
- python里的join方法_python中join()方法介绍
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str . join ( sequence ) 参数 sequence -- ...
- Thread.Join()方法的理解
关于C#中Thread.Join()的一点理解 今天是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个方法,下面谈谈自己的理解. Thread.Join()在MSDN中 ...
- python join_Python中join()方法的用法
Python中join()方法的主要作用是以特定的字符或字符串作为分隔符(字符串)将若干字符串拼接在一起.其作用的对象可以是单独的一个字符串,也可以是一个字符串元组,字符串列表.字符串集合或字符串字典 ...
- python join_python中join()方法介绍
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法:str.join(sequence) 参数 sequence -- 要连接的元 ...
- Python 字符串的join方法
标题 字符串操作中的join方法 通常,我们拿到一个字符串后,需要对字符串进行处理加工,也就是说数据的清洗后,我们才可以使用,常用的字符串操作广泛应用在网络爬虫以及web应用开发中,以及服务器运维等方 ...
- python 线程类 threading.Thread.join() 方法 (自闭,不让别人进来了)
def join(self, timeout=None):"""Wait until the thread terminates. 等待线程终止.This blocks ...
最新文章
- 用 Python 爬了点你们喜欢的小电影
- 360°透视:云原生架构及设计原则
- CSS 中功能相似伪类间的区别
- 知乎完成 2.7 亿美元 E 轮融资 加速建设全民知识内容平台(附周源全员邮件全文)...
- 求n!中含有某个因子个数的方法
- 写入mysql_MySQL写入缓冲区在数据库中的作用( Change Buffer )
- solr5.3.1 mysql_Solr5.3.1 dataimport 导入mysql数据
- debian8.8安装谷歌浏览器
- matlab中文帮助_拿走不谢,simulink,stateflow,ecoder帮助手册中英对照版首发
- ahb总线协议主机_IIC协议学习笔记
- 英文写作中常用的转折,并列词组
- 文明与征服李世民最强阵容推荐
- xcode5 自定义模板
- 5张图,看懂数据分析体系
- 2019年c++/c,java,python,前端,数据结构,ps等资料大全
- 虎从风跃,龙借云行--神行者Wi10无线移动硬盘开启WIFI无线存储共享新时代_MID论坛_太平洋电脑网产品论坛...
- 传感器网络知识点总结
- Python 打造基于有道翻译的命令行翻译工具(命令行爱好者必备)
- 如何快速掌握正确的UI配色方案?6种技巧不容错过!(转载)
- java -jar xx.jar是如何运行的
热门文章
- C++64位数据格式化输出
- 【3D形状检索指标】The Princeton Shape Benchmark
- 华三AP加AC本地转发配置案例
- java sse实例_使用SSE指令
- 出现死链有哪些原因?对网站有哪些影响?
- Android 如何使Tablayout内容和下划线长度相同?
- 利用 Windows 动态锁实现自动锁屏
- DLP客户端显示脱机的问题处理方法
- opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ]
- 2023 抖音塔防直播项目 附软件和教程