首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python多线程你真的会吗?一文帮你理清如何join线程

Python作为目前跨平台应用最火的编程语言,已经被很多行业的研究人员所使用,其实与其他编程语言相同,Python也只支持多线程编程,而且Python对于线程的支持也提供了很多方便的方法可以直接调用,从而可以很好的控制线程的执行。

下面咱们就来聊聊Python对于线程所提供的join()方法吧。

join()方法的功能是可以让一个线程等待另一个线程的完成,是Thread模块所提供的,例如当在一个程序执行流中调用其他线程的join()方法时,调用线程就会被阻塞,一直到被join()方法所加入的join线程执行完成。

其实呢,join()方法通常由使用线程的程序调用,可以理解为将一个大问题划分为很多小问题,然后为每个小问题分配一个线程,当这些小问题都执行处理完毕后,才会回到主程序进一步进行接下来的操作。

为了大家能够比较清晰的理解,咱们来看一下“栗子”吧:

上面咱们所写的程序中,可以看到一共有三个线程,在咱们所写的主程序中开始位置就启动了咱们所命名为“新线程”的子线程,此时这个线程就会和主线程进行并发执行,然后当主线程的循环变量i等于5时,就会启动咱们所命名为“被Join的线程”的线程,这个线程并不会和主线程并发执行,主线程必须等到这个线程执行结束后才会向下执行,所以在“被Join的线程”的线程执行时,实际上是只有两个子线程并发执行的,分别是“新线程”线程和“被Join的线程”线程,而对于主线程此时则是处于等待状态,这就是join()方法的作用。

好啦,下面咱们就调用Python解释器来看一下上面咱们所编写的程序的效果吧:

运行上面程序,就会输出如下三个线程的并发执行情况:

观察上面的输出可以看到,主线程执行到i==5时,程序启动并join了名为“被Join的线程”的线程,所以主线程将一直处于阻塞状态,一直到名为“被Join的线程”的线程执行完成才会跳到主线程“MainThread”中

最后咱们再来看一下Thread的join()方法的参数吧,其实join()是有参数的,join的语法结构为join(timeout=None),可以看到join()方法有一个timeout参数,其默认值为None,而参数timeout可以进行赋值,其含义是指定等待被join的线程的时间最长为timeout秒,也就是说当在timeout秒内被join的线程还没有执行结束的话,就不再进行等待了

好啦,以上就是今天咱们所聊的关于Python控制线程中的join线程的相关知识,希望大家能够学会join()方法的调用,今天就聊到这吧,下次再见哦!

敬请关注“品位集结号”,为您带来意外的小知识!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201215A0I2HK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券