you can go here to see the details.

我的理解:使用join后,使主线程执行完后(挂起),子线程再执行完后,主线程才结束。否则主线程会直接结束导致子线程不会执行。

import time
import threading def testRun():
print('-----start-----') # 1. 执行
time.sleep(2)    # 2. 阻塞(挂起,执行下一个线程:1和2步循环,直到所有线程都执行完 1,然后接着往下执行3)
print(f"当前线程名字:{threading.current_thread().name}") # 3 (3和4循环,直到所有线程都执行完3,然后接着往下执行5...)
time.sleep(2)  # 4
print('qeada')  # 5 thread_list = []
start = time.time()
for i in range(5):
t = threading.Thread(target=testRun)
thread_list.append(t)
for t in thread_list:
t.setDaemon(True)
t.start()
for t in thread_list: # 不使用join,会导致所有子线程遇到阻塞后,主线程并不会等待子线程阻塞结束而直接结束。
t.join()
print("it's over.")
print(f"总耗时:{time.time()-start}") >>>
-----start-----
-----start-----
-----start-----
-----start-----
-----start-----
当前线程名字:Thread-1
当前线程名字:Thread-2
当前线程名字:Thread-4
当前线程名字:Thread-3
当前线程名字:Thread-5
qeada
qeada
qeada
qeada
qeada
it's over.
总耗时:4.006011962890625

threading的join功能的更多相关文章

  1. Python中threading的join和setDaemon的区别[带例子]

    python的进程和线程经常用到,之前一直不明白threading的join和setDaemon的区别和用法,今天特地研究了一下.multiprocessing中也有这两个方法,同样适用,这里以thr ...

  2. celery 错误相关:Monkey-patching not on the main thread; threading.main_thread().join() will hang from a greenlet

    /Users/wangpingyang/.pyenv/versions/3.7.2/lib/python3.7/site-packages/httprunner/__init__.py:5: Monk ...

  3. MySQL 的 join 功能弱爆了?

    大家好,我是历小冰,今天我们来学习和吐槽一下 MySQL 的 Join 功能. 关于MySQL 的 join,大家一定了解过很多它的"轶事趣闻",比如两表 join 要小表驱动大表 ...

  4. Python中threading的join和setDaemon的区别及用法

    Python多线程编程时经常会用到join()和setDaemon()方法,基本用法如下: join([time]): 等待至线程中止.这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或 ...

  5. Python中threading的join和setDaemon的区别及用法[例子]

    Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别. 1.join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join() ...

  6. 多线程的join功能

    import threading import time def thread_job(): print("T1 start\n") for i in range(30): tim ...

  7. Hadoop_21_MapReduce程序实现Join功能

    1.序列化与Writable接口 1.1.hadoop的序列化格式 序列化和反序列化就是结构化对象和字节流之间的转换,主要用在内部进程的通讯和持久化存储方面 hadoop在节点间的内部通讯使用的是RP ...

  8. R语言:实现SQL的join功能的函数

    library(dplyr) ribao <- full_join(ribao,result,by = '渠道',copy = T) ribao <- full_join(ribao,se ...

  9. Python的多线程(threading)与多进程(multiprocessing )

    进程:程序的一次执行(程序载入内存,系统分配资源运行).每个进程有自己的内存空间,数据栈等,进程之间可以进行通讯,但是不能共享信息. 线程:所有的线程运行在同一个进程中,共享相同的运行环境.每个独立的 ...

随机推荐

  1. 魔豆应用开发傻瓜书——helloworld

    一.准备 对于使用Windows的朋友,请注意,你们的编译器⼀定要将Dos换⾏符设置变更为Unix换行符,否则在路由器里就会看到每行的最后有一个^M,对于部分命令的正确执⾏是有问题的. 二.建立项目 ...

  2. KMP(字符串匹配)算法

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  3. Winform 实现无边框窗体移动功能

    #region 窗体移动 [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImp ...

  4. 胖子哥的大数据之路(9)-数据仓库金融行业数据逻辑模型FS-LDM

    引言: 大数据不是海市蜃楼,万丈高楼平地起只是意淫,大数据发展还要从点滴做起,基于大数据构建国家级.行业级数据中心的项目会越来越多,大数据只是技术,而非解决方案,同样面临数据组织模式,数据逻辑模式的问 ...

  5. 常用的几个vagrant命令

    $ vagrant init      # 初始化 $ vagrant up        # 启动虚拟机$ vagrant halt      # 关闭虚拟机$ vagrant reload     ...

  6. IE6/7 单选按钮 radio 无法选中解决方法

    原文地址:http://blog.sina.com.cn/s/blog_74d6cedd0100ugih.html 今天在做一个页面,居然ff没问题,ie6/7上浏览的时候radio单选按钮不能被选中 ...

  7. 安装httpd服务配置

    本地yum源安装 mkdir /opt/dvd   (先用mkdir去根下opt目录下建一个名字叫dvd的目录) mount /dev/sr0   /opt/dvd  (用mount命令,挂载光盘设备 ...

  8. androidstudio在创建new project时,窗口太大,看不到下面确定按钮的解决方法

    点击File-->setting-->Appearance将里面的Override default fonts by(not recommended)打钩去掉. 这个是目前找到唯一办法.

  9. MongoDB集群搭建之副本集模仿主从模式的行为

    #模拟主节点异常中断 [root@ba3b27d855f6 bin]# kill -9 199 [root@ba3b27d855f6 bin]#   #连接到其中一台备份节点 [root@ba3b27 ...

  10. Scala 入门详解

    Scala 入门详解 基本语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.类,对象,方法,实例变 ...