首页 > 其他分享 >threading join

threading join

时间:2023-05-21 14:12:39浏览次数:33  
标签:join thread started Worker threading finished 线程

1、什么是join

      在Python中,多线程可以用于提高程序的并发性和运行效率。当使用多个线程时,主线程需要等待所有子线程执行完毕后才能结束程序,否则子线程可能仍在运行,而主线程已经退出。

为了解决这个问题,可以使用join()方法来让主线程等待所有子线程的完成。join()方法会阻塞主线程,直到指定的线程完成工作或者超时。如果不指定超时时间,则主线程将一直阻塞,直到所有子线程都完成工作。

 

2、应用场景

join()方法是用于等待一个线程的结束。当在主线程中调用该方法时,主线程会被阻塞,直到被调用的线程执行完毕。因此,join()方法通常应用在以下场景中:

  • 让主线程在子线程完成之后再继续执行,保证线程的顺序性。
  • 在多个子线程并发执行任务的情况下,需要等待所有子线程完成后再统一处理结果。
  • 协调多个线程之间的执行顺序,保证某些操作的原子性和同步性,在这种情况下,你可以使用 join() 方法来控制线程的运行顺序。

总之,join()方法是用于协调多个线程之间的执行顺序和控制线程的顺序性的重要工具。

 

3、示例

import threading
import time

def worker():
    print("Worker thread started\n")
    time.sleep(2)
    print("Worker thread finished\n")

threads = []
for i in range(5):
    t = threading.Thread(target=worker)
    threads.append(t)
    t.start()

for t in threads:
    t.join()

print("All threads finished")



结果一:
在不注释join的情况
Worker thread started

Worker thread started

Worker thread started

Worker thread started

Worker thread started

Worker thread finished

Worker thread finished

Worker thread finished
Worker thread finished


Worker thread finished

All threads finished


结果二:
在注释join的情况下
Worker thread started

Worker thread started

Worker thread started

Worker thread started

Worker thread started

All threads finished
Worker thread finished

Worker thread finished

Worker thread finished

Worker thread finished

Worker thread finished

 

 

 

标签:join,thread,started,Worker,threading,finished,线程
From: https://www.cnblogs.com/bill2014/p/17418531.html

相关文章

  • jointjs 入门
    链接http://www.bjhee.com/jointjs.html用JointJS做一个简单的功能控制图2019年1月30日 | 前端文章目录继上一篇介绍了GoJS之后,继续研究JS的绘图工具,毕竟GoJS有些小贵。这次选择了JointJS,完全开源,它还有一个商业版本叫Raddit,功能更强大。不过就我的需求场景,开源的Join......
  • exits, in, left join性能比较
    https://www.cnblogs.com/roychenyi/p/10724854.html exits inleftjoin性能比较,笔者使用的是MYSQL数据库,这三个关键字方法在其他的关系数据库里也是大同小异,如果各种有兴趣,自行比较。 我这里有一个249_account表,总数为8538507  249001_account_temp表总数为8242734......
  • thread 中 join 和 detach 函数
    在C++中,库提供了多线程编程的功能,其中包含了std::thread类,该类用于创建和控制线程。std::thread类提供了两个重要的成员函数:join()和detach(),用于管理线程的生命周期。join()函数:join()函数用于等待线程执行完成,并将线程的执行结果合并到当前线程。换句话说,join()函数会阻塞当前......
  • MySQL学习日志七,联表查询Join ON
    网上找的七种Join查询图片--查询参加考试的同学,包含的信息包括学号,姓名,科目编号,分数/*分析思路1.分析需求,查询的字段涉及到哪些表2.确定要哪些连接查询3.确定交叉点,涉及到的表有哪些相同的字段判断条件:学生表的studentno=成绩表的studentno*/joinon连接查询joinw......
  • STATA joinby命令
    joinby。当我们进行数据的横向合并时,经常会用到merge命令,但是在使用merge命令进行一对一合并、一对多合并、多对一合并和多对多合并都不是我们想要的结果时,可以考虑使用joinby组内交叉合并。老规矩,还是先上命令语法和选项介绍。一、命令介绍1、命令语法 joinby[varlist]usin......
  • spring aop MethodSignature = (MethodSignature) joinPoint.getSignature();
    MethodSignaturesignature=(MethodSignature)joinPoint.getSignature();为什么这里可以转回为MethodSignatrue,官网上没有这么说,如果这里转换失败,那运行会报错,这是不允许的。必须找到调用这里的代码,看看这里的Signature 是怎么放进去的。网上找了好久没有找到相关知识......
  • Python多线程(multithreading)
    1.threading模块Python3线程中常用的两个模块为:_thread,threading(推荐使用).thread模块已被废弃,为了兼容性,Python3将thread重命名为_thread,即通过标准库_thread和threading提供对线程的支持。_thread提供了低级别的、原始的线程以及一个简单的锁,它相比于threading模块的功能还......
  • 2020-07-30-python-multithreading&multiprocessing
    注:参考Python多线程多进程那些事儿看这篇就够了~~进程、线程进程和线程简单举例:对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程。有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要......
  • 关于使用kubeadm reset命令对kubeadm init与kubeadm join操作后遇到报错的情况-进行恢
    在Kubernetes/k8s集群中,无论是在开始的master节点初始化,还是后面客户端使用kubeadmjoin命令加入到集群可能都会遇到很多报错,对于新手来说、很多还不是很好解决、也有一些情况,是在初始化之前忘记执行一些操作,而导致报错这种一般都需要执行漏掉的操作,重新执行初始化操作,但是如......
  • MySQL中的Join 的算法(NLJ、BNL、BKA)
    本文已收录至Github,推荐阅读......