当前位置: 首页 > news >正文

python的守护线程设置

很简单的代码

import time
from threading import Thread
# 定义一个函数
def add(a,b):# 阻塞一秒钟,区别显示主线程和子线程for i in range(3):time.sleep(1)print(f'这是第{i}轮')
if __name__ == '__main__':# 创建一个线程给函数addthread1=Thread(group=None,target=add,args=(1,2))# 给子线程加入了线程守护Thread.daemon=True# 让线程开始执行thread1.start()# 主线程需要执行打印的内容print('这是主线程的内容')

在执行过程当中,没有给新建的子线程设定“守护”,因为Thread.daemon=True属于随手敲出来的,莫名其妙地完成了对该子线程的守护,试着摸索了下其中的逻辑:

1.在主线程中创建目标子线程thread1,因为没有指定daemon值,默认是None,python会通过current_thread()方法找到当前线程实例,并获取它的daemon值

        if daemon is not None:if daemon and not _daemon_threads_allowed():raise RuntimeError('daemon threads are disabled in this (sub)interpreter')self._daemonic = daemonelse:self._daemonic = current_thread().daemon

2.current_thread()方法

def current_thread():"""Return the current Thread object, corresponding to the caller's thread of control.If the caller's thread of control was not created through the threadingmodule, a dummy thread object with limited functionality is returned."""try:return _active[get_ident()]except KeyError:return _DummyThread()

3._active通过get_ident()方法返回的实例对象的序号,在map中获得当前的线程实例对象

_active = {}    # maps thread id to Thread object

通过上述逻辑,要创建的子线程获取到了当前线程,也就是它的父线程实例对象,而通过Thread.daemon=True改变了Thread类变量,后续创建的线程实例都继承该状态,即默认都为守护线程。

还需钻研


文章转载自:

http://2rbCBhds.xkzrt.cn
http://VoL6saQH.xkzrt.cn
http://kctU6K7V.xkzrt.cn
http://pd3HsaUc.xkzrt.cn
http://Wj5zD0jK.xkzrt.cn
http://ZFdlSkvK.xkzrt.cn
http://tZ4X7Fly.xkzrt.cn
http://JWRr1BHv.xkzrt.cn
http://RpmKFxbT.xkzrt.cn
http://ZacD81Gs.xkzrt.cn
http://79lGVrWW.xkzrt.cn
http://XhXherca.xkzrt.cn
http://xslKRRyr.xkzrt.cn
http://fnyzbTdQ.xkzrt.cn
http://Bhal5cnG.xkzrt.cn
http://hHblbGOd.xkzrt.cn
http://9e8FcwyD.xkzrt.cn
http://Y03s6gM5.xkzrt.cn
http://xxYDeqOu.xkzrt.cn
http://ojr4eJtc.xkzrt.cn
http://Vv7Drojs.xkzrt.cn
http://TN5P0c0o.xkzrt.cn
http://IJYNfjb9.xkzrt.cn
http://G5NMS9k2.xkzrt.cn
http://xVavDsVt.xkzrt.cn
http://LXjYtxwX.xkzrt.cn
http://YFY8wxao.xkzrt.cn
http://zZqw5gKk.xkzrt.cn
http://x1xeQIEX.xkzrt.cn
http://VShSB5f2.xkzrt.cn
http://www.dtcms.com/a/388009.html

相关文章:

  • LTC5591IUH#TRPBF 无线和射频集成电路IC ADI亚德诺半导体 电子元器件解析
  • 【数据分享】土地利用shp数据分享-海南
  • 分布式拜占庭容错算法——PBFT算法深度解析
  • 《兔兔秘密花园》情人节密技曝光 输入隐藏指令即可
  • SQuAD:机器阅读理解领域的里程碑数据集
  • qt模型视图架构使用时需要注意什么
  • webRTC golang 开发核心
  • UVa10603 Fill
  • 小说《灵渊纪元:数据重构天道》的深层解读与象征意义分析
  • Android Kotlin 实现微信分享功能
  • Git : 多人协作和企业级开发模型
  • Twitter/X 搜索headers x-client-transaction-id 参数
  • Node.js后端工程师需了解的前端技术:HTML5、JavaScript、CSS、工具(Axios、EJS、 Chart.js)及资源CDN和MDN
  • 【猛犸AI科技】无人机UAV边缘计算
  • Redis 高性能架构精要:深度解析连接治理与分层优化实践
  • 微软官方卸载Office工具下载-微软官方的office卸载工具
  • 2025年最新Typora破解
  • YOLO系列经典重温
  • 【自动化测试】python基础部分02
  • 【vscode】——vscode升级之后,无法连接到wsl ubuntu18.04
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘MySQLdb’ 问题
  • 雅菲奥朗SRE知识墙分享(八):『SRE事件管理的定义与实践』
  • UI 自动化测试中元素被遮挡无法点击的解决方案(Selenium + Python 实战)
  • 消除PCB电磁干扰的方法:从设计到制造的系统性解决方案
  • 图解算法java
  • Kotlin flow详解
  • Class1:Android Studio下载安装教程
  • windwos 下搭建OpenCV开发环境(基于Qt 5.14.2)
  • QSharedMemory + QSystemSemaphore实现进程间通讯的思路、关键点,并附一个完整可运行的Qt Demo(Qt Creator工程)
  • 使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目