python 之多线程join()
join()其实就是阻塞线程,控制线程的执行,从而控制住代码的执行顺序。
参照这篇文章:python3对多线程join的理解
通常都是,线程join()后,顺序执行join()后面的代码,如下面的例子:
def main():
print('---main begin----')
t1 = threading.Thread(target=T1_job, name='T1')
t2 = threading.Thread(target=T2_job, name='T2')
t1.start()
t2.start() t2.join()
print("t2 done") t1.join()
print("t1 done") print('---main end----')
---------------------
作者:阿常呓语
来源:CSDN
原文:https://blog.csdn.net/u010339879/article/details/86506450
版权声明:本文为博主原创文章,转载请附上博文链接!
t1和t2的开始顺序由系统决定,谁都可能先开始执行,如代码,t2.join(),print("t2 done")在先,而t1.join() print("t1 done")在后,则按照代码顺序,一定是print("t2 done")先执行,而 print("t1 done")后执行。当然这里在没有设定线程的等待时间timeout时,应该是按照线程运行完毕后在执行下一行代码。即t2运行完了,执行print("t2 done"),接着等t1执行完毕, print("t1 done")执行,最后print('---main end----')执行。可见,join()其实就是阻塞线程,控制代码的执行顺序的。当然,线程在执行时是并发的,只不过是他们的结束是按照join()的顺序来控制的。运行结果如下:
---main begin----
T1 start
begin sleep 0.1s
T2 start
T2 finish
t2 done
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
T1 finish
t1 done
---main end---- ---------------------
作者:阿常呓语
来源:CSDN
原文:https://blog.csdn.net/u010339879/article/details/86506450
版权声明:本文为博主原创文章,转载请附上博文链接!
python 之多线程join()的更多相关文章
- Python的多线程(threading)与多进程(multiprocessing )
进程:程序的一次执行(程序载入内存,系统分配资源运行).每个进程有自己的内存空间,数据栈等,进程之间可以进行通讯,但是不能共享信息. 线程:所有的线程运行在同一个进程中,共享相同的运行环境.每个独立的 ...
- Python实现多线程HTTP下载器
本文将介绍使用Python编写多线程HTTP下载器,并生成.exe可执行文件. 环境:windows/Linux + Python2.7.x 单线程 在介绍多线程之前首先介绍单线程.编写单线程的思路为 ...
- Python实现多线程调用GDAL执行正射校正
python实现多线程参考http://www.runoob.com/python/python-multithreading.html #!/usr/bin/env python # coding: ...
- Python之多线程和多进程
一.多线程 1.顺序执行单个线程,注意要顺序执行的话,需要用join. #coding=utf-8 from threading import Thread import time def my_co ...
- Python【多线程与多进程】
import time,threading print("=======串行方式.并行两种方式调用run()函数=======")def run(): print('哈哈哈') # ...
- 【转】使用python进行多线程编程
1. python对多线程的支持 1)虚拟机层面 Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,暂时无法利用多处理器的优势.使 ...
- [ Python - 11 ] 多线程及GIL全局锁
1. GIL是什么? 首先需要明确的一点是GIL并不是python的特性, 它是在实现python解析器(Cpython)时所引入的一个概念. 而Cpython是大部分环境下默认的python执行环境 ...
- Python编程-多线程
一.python并发编程之多线程 1.threading模块 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 1.1 开启线程的 ...
- Python之多线程与多进程(二)
多进程 上一章:Python多线程与多进程(一) 由于GIL的存在,Python的多线程并没有实现真正的并行.因此,一些问题使用threading模块并不能解决 不过Python为并行提供了一个替代方 ...
随机推荐
- 爬虫——简单处理js中嵌入的json数据
看了群里一个人提问道https://www.amazon.com/,商品分类那里无法用xpath拿得到列表.遂对其研究. 通过抓包工具可以得知,原始数据存在于js代码中,我的方式是手动解析js,从里面 ...
- 《精通并发与Netty》学习笔记(03 - 客户端程序编写)
上节我们编写了netty服务端的程序,这节我们来写客户端程序 第一步:改造服务端程序为: (1)MyServer类: package com.ssy.netty.demo01; import io.n ...
- 关于mysql的自增测试,innodb和myisam下的不同表现
关于mysql的自增测试,innodb和myisam下的不同表现 innodb引擎下的自增id测试 1 innodb引擎下,如果显示insert了最大值,那么下次的AUTO_INCREMENT值就是这 ...
- 第八周课程总结&实验报告(六)
第八周课程总结 启动多线程售票(上课老师说要加入作业的部分) public class TestDemo { public static void main(StringD args) throws ...
- kafka修改topic副本数
工作案例: 大数据开发用系统脚本自动在kafka建topic,检查后才发现副本数只有1个,存在数据丢失的风险.需要立刻把副本数改为3个. 开始干活,首先想到的是下面的命令: ${BIN_PATH}/k ...
- vsftpd下载文件时内容乱码
windows客户端访问Linux服务端的ftp并下载文档时,内容会出现乱码,这是由于vsftpd文件服务器不支持转码功能 通过java FTPClient下载 方法为 OutputStream is ...
- 【Codeforces】600E. Lomsat gelral
Codeforces 600E. Lomsat gelral 学习了一下dsu on tree 所以为啥是dsu而不是dfs on tree??? 这道题先把这棵树轻重链剖分了,然后先处理轻儿子,处理 ...
- log4j rootLogger配置示例(log4j.properties)
log4j.rootLogger=INFO,commonLogger, log4j.appender.commonLogger=org.apache.log4j.ConsoleAppenderlog4 ...
- react 深度 循环嵌套对象渲染问题 map
查了一些资料貌似react的循环渲染对象只有map,但map只支持数组对象. 接到后台数据如下 { "list": { "A": [{ "image& ...
- 作业8:常用java命令(二)
一.jinfo(Configuration Info for Java) 1.功能:jinfo可以实时地查看和调整虚拟机的各项参数. 2.参数: 选项 作用 -flag name 打印改名字的VM设置 ...