Python提供了多个模块来支持多线程编程,包括thread,threadingQueue模块等。编写的程序可以使用thread和threading模块来创建与管理线程。

  • thread模块提供了最基本的线程和锁定机制;
  • threading模块提供了更高级的,功能更全面的线程管理。
  • Queue模块,可以创建一个队列数据结构,就是先进先出,用于实现多进程之间信息数据共享。

在学习过程中,博主推荐使用threading模块,而不是使用thread模块有很多原因。

  • 这是因为threading模块,更加先进,有更好的线程支持,并且它会和thread模块中的一些属性相冲突。

  • 另外一个原因就是thread级别低,所拥有的同步原语很少,其实只有一个,而threading模块模块有很多。

  • 还有一个很重要的原因是就是thread模块对于线程何时退出没有控制,就是说主线程结束了,其他的子线程也会随之强制结束,不会发出警告或者进行适当的处理,而在threading模块中有daemon()守护线程,将子线程设置为守护线程,那么子线程会在主线程结束时自动退出。

threading模块

下面的表格是总结一些threading模块常用的对象:

对象 描述
Thread 表示一个执行线程的对象
Lock 锁原语对象(和thread中的锁一样)
RLock 可重入锁对象,使单一线程再次获得已持有的锁(递归锁)
Condition 条件变量对象,使一个线程等待另一个线程满足特定条件,比如改变状态或某个数据值
Event 条件变量的通用版本,任意数量的线程等待某个事件的发生,在该事件发生后所有的线程将被激活
Semaphore 为线程共享的有限资源提供一个计数器,如果没有可用资源会被阻塞
BoundSemaphore 与Semaphore类似,不过它不允许超过初始值
Timer 和Thread 类似,不过他要在运行前等待一段时间
Barrier 创建一个“障碍”,必须达到 指定数量的线程之后才可以继续

Thread 类

threading模块的Thread类是主要的执行对象,它有thread模块中没有的很多函数,下面的表格列出它的属性和方法列表。

属性 描述
Thread 对象数据属性
name 线程名
ident 线程的标识符
daemon 布尔值,守护线程

下面是Thread对象方法

方法 描述
_init_(group=None,name=None,args=(),kwargs={},verbose=None,daemon=None) 实例化对象,需传入target目标函数,参数args或者kwargs
start() 开始执行该线程
run() 定义线程功能的方法(常在子类中被重写)
join(timeout=None) 直到启动的线程终止之前一直挂起:除非给出timeout 秒,否则一直阻塞
getName () 返回线程名
setName(name) 设定线程名
isAlivel/is_alive() 布尔标识,线程是否还存活
isDaemon() 如果是守护线程,则返回True;否则返回Fslse
setDaemon(daemonic) 把线程的守护标识设定为 daemonic,必须在线程start()之前调用

python之多线程编程(一):基本介绍相关推荐

  1. python进阶 多线程编程 —— threading和queue库实现多线程编程

    python进阶 多线程编程 -- threading和queue库实现多线程编程) 摘要 多线程实现逻辑封装 模型参数选择实例 摘要 本文主要介绍了利用python的 threading和queue ...

  2. 进程、线程及python的多线程编程

    目录 一.进程.线程和并行执行 1.什么是进程.线程 注意 2.什么是并行执行 二.python的多线程编程 threading模块 语法 多线程编程的传参 演示 三.总结 一.进程.线程和并行执行 ...

  3. python 实现多线程编程

    就个人而言,学了这么多年的课程又写了这么多年的程序,虽然没有涉及到企业级的项目,但还是体会到了有几个知识点是非常重要的,包括:面向对象的思想.如何架构一个项目.设计模式来具体解决问题.应用机器学习和深 ...

  4. python --- 基础多线程编程

    在python中进行多线程编程之前必须了解的问题: 1. 什么是线程? 答:线程是程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程 ...

  5. 【转】使用python进行多线程编程

    1. python对多线程的支持 1)虚拟机层面 Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,暂时无法利用多处理器的优势.使 ...

  6. python多核多线程编程实例_Python多线程

    多线程基础概念 并行与并发并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允许程 ...

  7. 同步和异步Socket多线程编程基本模型介绍

    多线程:  0.  多线程的概念:  多线程是这样一种机制,它允许在程序中并发执行多个线程,且每个线程彼此间互相独立.  并发的理解:  多个线程的执行是并发的,也就是在逻辑上"同时&quo ...

  8. Python Threading 多线程编程

    写在篇前   threading模块是python多线程处理包,使用该模块可以很方便的实现多线程处理任务,本篇文章的基础是需要掌握进程.线程基本概念,对PV原语.锁等传统同步处理方法有一定的了解.另外 ...

  9. 【Python】多线程及threading模块介绍

    ​目录 1. 多线程简单介绍 2. threading模块介绍 2.1 threading模块常用方法 2.2 Thread类使用 2.2.1 使用构造函数传递可调用对象的方法创建线程 2.2.2 继 ...

最新文章

  1. 为什么要放弃 Lombok ?
  2. Vue.js 使用 Swiper.js 在 iOS 11 时出现错误
  3. Dell Fluid FS 集群NAS系统在4K非编环境的卓越表现
  4. C++继承与派生(原理归纳)
  5. Apache上部署Django
  6. python函数名第一类方法、f-string格式化、迭代器及递归函数
  7. LeetCode 1784. 检查二进制字符串字段
  8. 为什么会有这么多种程序设计语言?
  9. MS SQL Server存储过程的优点有哪些呢?
  10. maya拓扑插件_3D角色模型,Maya、Zbrush人头建模
  11. Unity性能优化之物理引擎的优化(一)
  12. TeamTalk 配置模块详解
  13. 三色旗的C语言算法,从算法学起C语言--三色旗问题
  14. 酒香不怕巷子深,有心人才找得到的京都茶寮
  15. 屏幕保护程序Aerial Mac
  16. java程序调用时的调用规则,Java程序调用ILog规则出错
  17. 从测序到宏基因组:聚焦菌群生信分析方法最前沿
  18. k-means聚类、以及二维、三维可视化
  19. LTE MAC层令牌桶算法
  20. 【无标题】Map的使用方式

热门文章

  1. Bootstrap全局css样式_代码
  2. 函数的不同的调用方式 函数也是对象 数组的函数调用 apply和call方法的使用
  3. 指定版本的python运行和指定python版本的pip
  4. USB接口的键盘描述符范例
  5. HID接口设备-固件要求
  6. enum的介绍以及和#define的区别
  7. linux+tomcat+apache
  8. 记一次重写easyui的datetimebox控件的小片段
  9. 【C++】const成员函数
  10. 求【javascript设计模式】【高性能网站建设指南】PDF!哪位有给下啊!!!