hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

完全明白Python多线程中的setDaemon与join【配有GIF表示】

2019-11-18杂谈搜奇网29°c
A+ A-

在举行Python多线程编程时, join() 和 setDaemon() 是最经常使用的要领,下面说说二者的用法和区分。

1、join ()

例子:主线程A中,建立了子线程B,而且在主线程A中挪用了B.join(),

那末,主线程A会在挪用的处所壅塞直到子线程B完成操纵后,才能够接着往下实行。

 

2、setDaemon()

例子:主线程A中,建立了子线程B,而且在主线程A中挪用了B.setDaemon(),

即:把主线程A设置为保卫线程,这时候,假如主线程A实行完毕了,就不论子线程B是不是完成,一并和主线程A退出。

注重:必须在start() 要领挪用之前设置,假如不设置为保卫线程,顺序会被无穷挂起。

 

3、区分

二者基础是相反的(join主线程等子线程完事【横刀立马】,setDaemon主线程管好本身就能够了,不等子线程完事【义无返顾】)。

 

4、代码层面明白

# coding:utf-8
import threading
import time


def get_list_page():
    print("列表页抓取最先\n")
    time.sleep(3)
    print("列表页抓取完毕\n")


def get_detail_page():
    print("详情页抓取最先\n")
    time.sleep(2)
    print("详情页抓取完毕\n")


# 建立两个子线程
thread1 = threading.Thread(target=get_list_page)
thread2 = threading.Thread(target=get_detail_page)

start_time = time.time()

# # 设置线程保卫
# thread1.setDaemon(True)
# thread2.setDaemon(True)

# 启动两个线程
thread1.start()
thread2.start()

# # 设置线程壅塞
# thread1.join()
# thread2.join()

print("Run time is {}".format(time.time() - start_time)) 

运转效果:

 

诠释:

三个线程基础属于并发,主线程、子线程1、子线程2会同时运转,各干各的,

而且,主线程会比及两个子线程完毕后,才会完毕。

 

设置线程保卫(setDaemon()) 即反解释24-26行:

诠释:

有了保卫线程以后,主线程就会在本身完毕后,(不论保卫线程照样不是在运转)kill掉保卫线程。

 

设置线程壅塞(join()) 即反解释32-34行:

诠释:

有了线程壅塞后,主线程就会停在join那边,守候壅塞的子线程运转完毕,然后再继承实行。

 

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
完全明白Python多线程中的setDaemon与join【配有GIF表示】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282062.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>