天天看点:python浅析守护线程与非守护线程的区别与使用
【资料图】
目录
什么是守护线程非守护线程守护线程什么是守护线程
当主线程执行结束后,所有 在运行的子线程都 直接结束,不管子任务是否完成很多语言的 垃圾收集器 就运用了 守护线程,去回收程序不再使用的垃圾内存而非守护线程其实就跟守护线程相反,当主线程结束后,如果子线程还在运行,子线程并不会直接结束,而是 继续完成任务,等待子线程都执行完毕才结束非守护线程
下面是一个普通线程的例子,也就是 非守护线程我们创建了 autofelix 购物线程,去模拟购物流程的任务可以看出当主线程已经结束,但是子线程依然 没有退出因为 shopping 这个子线程任务还在工作,所以程序会一直运行下去import threading import time def shopping(): while True: print("飞兔小哥 进入了商场..."") time.sleep(1) if __name__ == "__main__": autofelix = threading.Thread(target=shopping) autofelix.start() print("飞兔小哥 准备出去买东西...") time.sleep(0.5) print("飞兔小哥 看到了西红柿...") time.sleep(0.5) print("飞兔小哥 又买了土豆...") time.sleep(0.5) print("飞兔小哥 回家了!")
# 运行结果
飞兔小哥 进入了商场..."
飞兔小哥 准备出去买东西...
飞兔小哥 看到了西红柿...
飞兔小哥 又买了土豆...
飞兔小哥 进入了商场..."
飞兔小哥 回家了!
飞兔小哥 进入了商场..."
飞兔小哥 进入了商场..."
飞兔小哥 进入了商场..."
飞兔小哥 进入了商场..."
飞兔小哥 进入了商场..."
........
守护线程
我们可以通过设置xxx.daemon = True
将线程变成守护线程必须在启动之前将线程配置为守护程序或非守护程序,否则 python
将引发运行时错误守护程序线程不会像普通线程一样正常退出,所以要确保,子任务的异常结束不会产生任何负面影响
import threading import time def shopping(): while True: print("飞兔小哥 进入了商场..."") time.sleep(1) if __name__ == "__main__": autofelix = threading.Thread(target=shopping) autofelix.daemon = True autofelix.start() print("飞兔小哥 准备出去买东西...") time.sleep(0.5) print("飞兔小哥 看到了西红柿...") time.sleep(0.5) print("飞兔小哥 又买了土豆...") time.sleep(0.5) print("飞兔小哥 回家了!")
# 运行结果
飞兔小哥 进入了商场..."
飞兔小哥 准备出去买东西...
飞兔小哥 看到了西红柿...
飞兔小哥 进入了商场..."
飞兔小哥 又买了土豆...
飞兔小哥 回家了!
到此这篇关于python浅析守护线程与非守护线程的区别与使用的文章就介绍到这了,更多相关python守护线程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 2转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 3充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 4好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 5名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 6亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 7京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 8网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 9市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 10北京市市场监管局为企业纾困减负保护经济韧性