threading:这个模块在较低级的模块 _thread 基础上建立较高级的线程接口

以后我们就用 threading 模块来管理线程就可以了。

Tread 类:控制线程创建、启动及运行方式

一、线程的创建和启动(两种方法)

from threading import Thread

1、实例化 Thread 类的方式:

  • 定义一个任务(函数或方法)
  • 实例化 Thread 类,并传入函数名和参数
  • start() 方法启动线程,运行传入的函数
  • 任务运行完后,线程自动退出

备注说明:

start() 方法,实质是自动运行 Thread 类中 run() 方法,run() 方法去执行传入的函数

通过看源码 Thead 类的构造函数是这样的,下面做以下参数说明def __init__(self, group=None, target=None, name=None,                 args=(), kwargs=None, *, daemon=None):group:参数保留,为了以后能加入线程组的功能,目前python没有实现线程组target:是可调用对象,比如一个函数名neme:线程的名称,默认情况下,threading-Nargs:可调用对象的参数元组,默认()kwargs:可调用对象的关键字参数字典,默认{}daemon:是否为守护线程(True或者False),可以实例化时赋值

实例化 Thread 类

函数带参数的实例化

2、继承 Thread 类,重写 run() 方法的方式

  • 定义一个子类,继承Thread类
  • 重写run()方法(写任务)
  • 实例化子类
  • start() 方法启动线程,自动运行子类中的 run() 方法
  • 任务运行完后,线程自动退出

备注说明:

定义的子类,只能重写 __init__() 和 run() 方法

重写 __init__() 方法时,必须初始化 Tread 类的构造函数。super(子类, self).__init__()

重写 run() 方法

重写__init__() 方法

二、线程同步和线程守护

线程同步(join()):

  • 主线程遇到 thd.join() 等待子线程
  • 等子线程(thd)执行结束,主线程再继续执行,直到结束

线程守护(thd.daemon = True):

  • 主线程不等待子线程
  • thd 跟随主线程结束
  • daemon 必须在调用 start() 之前或实例化 Thread 类时设置

运行方式有四种:

1、线程同步(join):等子线程结束,主线程再继续运行

2、线程同步(join):等子线程2秒,主线程再继续运行,开始各运行各的

3、线程守护(daemon):不等子线程,跟随主线程结束

4、守护同步(daemon、join):等子线程2秒,跟随主线程结束

三、线程的其他方法

1、is_alive():返回线程是否存活(True或者False)

2、name:线程名称

设置有三种方法 是等价的

  • thd = Tread(target=drink, name='drink-thread')
  • thd.name='drink-thread' 常用
  • thd.setName('drink-thread')

读取有两种方法 是等价的

  • thd.name 常用
  • thd.getName()

3、daemon:线程守护

设置 有三种方法 是等价的

  • thd = Tread(target=drink, daemon=True)
  • thd.daemon = True 常用
  • thd.setDaemon(True)

读取 有两种方法 是等价的

  • thd.daemon 常用
  • thd.isDaemon()

4、ident:返回线程 id

  • thd.ident

小伙伴喜欢关注哦,接下来讨论 线程锁

python 中主线程结束 子线程还在运行么_python 线程之一:线程的创建、启动及运行方式相关推荐

  1. python 中主线程结束 子线程还在运行么_「干货」python线程笔记

    引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,每条数据互不干扰.该如何执行才能花费时间最短呢? 在多线程(MT)编程出现之前 ...

  2. python 中主线程结束 子线程还在运行么_Python爬虫进阶(二)爬虫之多任务模块(Ⅰ)...

    今天,咱们来讨论多任务模块了. 一.多任务介绍 二.多线程的创建 一.多任务介绍 多任务,有很多场景中的事情是同时进行的,比如开车的时候,手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的.这些就是多 ...

  3. linux主线程结束 子线程还能运行么,linux主线程和子线程

    "读了三遍,愣是没读懂楼主想说啥.######@java_zf 我现在在做的一个项目用到了多线程,我就在项目中子线程调用的一个函数中加了个sleep.你可以写个简单的代码试一下,应该比较简单 ...

  4. 主线程结束子线程会跟着结束吗

    Java 多线程默认不是守护线程,当使用setDaemon它设置为守护线程时,如果此时Java虚拟机中没有别的正在执行的非守护线程,那么它会随着main的结束而结束,下面我们测试一下: 将main主方 ...

  5. VC++ 中主线程等待子线程结束的方法

    void WaitForThreadExit(void) {DWORD dwRet; //返回值MSG msg; int wait_count=4; //线程句柄有4个int nExitThreadC ...

  6. python主线程_Python主线程和子线程

    Python主线程和子线程 一.setDaemon(False) 当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行的最小单位,当设置多线程时,主线程会创建多个子线程,在Python中,默认 ...

  7. python 主程序等待 子线程_Python多线程中主线程等待所有子线程结束的方法

    Python多线程中主线程等待所有子线程结束的方法 发布时间:2020-07-30 14:39:04 来源:亿速云 阅读:77 作者:小猪 这篇文章主要讲解了Python多线程中主线程等待所有子线程结 ...

  8. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划

    作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...

  9. java main 如何不退出_为什么java main主线程退出了子线程还能运行;golang main结束所有协程都被结束了...

    最近看golang main函数结束,所有协程都被结束了 结论是这样:A不是main程的情况下,在A程里开启B程,A程执行完,A程return之后,B程不受影响,不会挂掉.所有子协程与main程同级的 ...

最新文章

  1. 白嫖谷歌 GPU 资源!使用神经网络提取 PDF 表格工具来了,支持图片
  2. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据...
  3. select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET(转)
  4. jquery after append appendTo三个函数的区别
  5. Apache Spark学习:利用Scala语言开发Spark应用程序
  6. RenderManager - cssHook - select_all icon render logic
  7. 细数开源历史上的十个重大事件
  8. 我最开始学dancing link的HTML5的时候
  9. 三问Spring事务:解决什么问题?如何解决?存在什么问题?
  10. 支持中国西安申办ICCV2025,见证计算机视觉蓬勃发展的20年 | Vote for ICCV2025 Xi'an China...
  11. Windows下打开Url 代码封装 C++
  12. 【递归】剑指offer——面试题19:二叉树的镜像
  13. LabVIEW顺序结构
  14. Win11添加日语输入法的教程
  15. 尽量使用unity引擎的Random随机数
  16. 【MindSpore】 No module named apos;mindspore.dataset.transformsapos;
  17. ACM POJ 题目分类(完整整理版本)
  18. 大学生考系统集成项目管理工程师有什么用?
  19. 一张纸对折13次JAVA_一张纸最多折叠8次?她把纸折叠了13次后,发生了什么?
  20. 阿里云-DataWorks- ODPS SQL开发

热门文章

  1. 分布式系统的复杂度度量思考
  2. HTML+CSS基础(2)-HTML标签的简单介绍和网页注释
  3. Android UI开发详解之ActionBar .
  4. Eclipse下svn的创建分支/合并/切换使用
  5. linux DNS配置详解
  6. 流氓网站5599.net修改ie主页分析
  7. 记一次单机系统的性能优化:最后竟是 TCP 的锅
  8. 这个 MySQL bug 99% 的人会踩坑!
  9. 图文详解 23 种设计模式
  10. 按下电源后的几秒钟,CPU在干嘛?