线程----join()详解

今天突然觉得join函数好陌生 忘了是干嘛了的,所得花点回顾了一下。

 

了解线程的知识    请点 --->>   了解更多的线程知识

 

想要彻底了解join()就要先理解守护线程:

         守护线程的工作方式类似服务器,只要没有客户端发来请求,就一直运行并且保持空闲,很像是后台。threading模块建立的线程除了守护线程之外,其余的线程都会在主线程结束之前结束掉。也就是说一般会先解决非守护线程的,所以相比而言,守护线程好像就“没那么重要”。设置守护线程使用,要在线程启动之前就设置好
 

接下来是join():

 threading模块中join()的作用是为了防止子线程没结束主线程就先结束了,join()对于创建的普通的线程(除了守护线程)是没有多大作用的,有跟没有一样,都是要等到子线程结束后才会执行主线程。守护线程相比普通的线程显得“没有那么重要”,所以主线程一般不等它结束就先结束了。如果是作为守护线程使用join(),那么就会等待守护线程结束后才会执行主线程。
 

下面请看非守护线程使用join(),不使用join(),以及守护线程使用join()和不使用的具体实例

1.非守护线程不使用join()

from threading import Thread
import time

def dance(num):
    for i in range(num):
        print("正在跳舞", i)
        time.sleep(2)

def sing(num):
    for i in range(num):
        print("正在唱歌", i)
        time.sleep(2)

def main():
    t1 = Thread(target=dance, args=(3,))
    t2 = Thread(target=sing, args=(3,))
    t1.start()
    t2.start()

if __name__ == '__main__':
    main()
    print("程序结束了")

执行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值