Python多线程编程(一):threading模块综述


Posted in Python onApril 05, 2015

Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势。在Python中我们主要是通过thread和 threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用 threading模块实现多线程编程。这篇文章我们主要来看看Python对多线程编程的支持。

在语言层面,Python对多线程提供了很好的支持,可以方便地支持创建线程、互斥锁、信号量、同步等特性。下面就是官网上介绍threading模块的基本资料及功能:

实现模块

thread:多线程的底层支持模块,一般不建议使用;
threading:对thread进行了封装,将一些线程的操作对象化。

threading模块

Thread 线程类,这是我们用的最多的一个类,你可以指定线程函数执行或者继承自它都可以实现子线程功能;

Timer与Thread类似,但要等待一段时间后才开始运行;
Lock 锁原语,这个我们可以对全局变量互斥时使用;
RLock 可重入锁,使单线程可以再次获得已经获得的锁;
Condition 条件变量,能让一个线程停下来,等待其他线程满足某个“条件”;
Event 通用的条件变量。多个线程可以等待某个事件发生,在事件发生后,所有的线程都被激活;
Semaphore为等待锁的线程提供一个类似“等候室”的结构;
BoundedSemaphore 与semaphore类似,但不允许超过初始值;
Queue:实现了多生产者(Producer)、多消费者(Consumer)的队列,支持锁原语,能够在多个线程之间提供很好的同步支持。

Thread类

是你主要的线程类,可以创建进程实例。该类提供的函数包括:
getName(self) 返回线程的名字
isAlive(self) 布尔标志,表示这个线程是否还在运行中
isDaemon(self) 返回线程的daemon标志
join(self, timeout=None) 程序挂起,直到线程结束,如果给出timeout,则最多阻塞timeout秒
run(self) 定义线程的功能函数
setDaemon(self, daemonic) 把线程的daemon标志设为daemonic
setName(self, name) 设置线程的名字
start(self) 开始线程执行

Queue提供的类

Queue队列
LifoQueue后入先出(LIFO)队列
PriorityQueue 优先队列

接下来

接下来的一系列文章,将会用一个一个示例来展示threading的各个功能,包括但不限于:两种方式起线程、threading.Thread类的重要函数、使用Lock互斥及RLock实现重入锁、使用Condition实现生产者和消费者模型、使用Event和Semaphore多线程通信。

Python 相关文章推荐
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
python elasticsearch环境搭建详解
Sep 02 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
Python动态强类型解释型语言原理解析
Mar 25 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
Python调用Redis的示例代码
Nov 24 Python
python 批量将中文名转换为拼音
Feb 07 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 Python
Python中使用dom模块生成XML文件示例
Apr 05 #Python
Python中比较特别的除法运算和幂运算介绍
Apr 05 #Python
Python中使用logging模块打印log日志详解
Apr 05 #Python
Python中的两个内置模块介绍
Apr 05 #Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 #Python
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 #Python
Python中使用第三方库xlrd来读取Excel示例
Apr 05 #Python
You might like
德生S2000电路分析
2021/03/02 无线电
基于php常用正则表达式的整理汇总
2013/06/08 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
php查询及多条件查询
2017/02/26 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
Python 爬虫性能相关总结
2020/08/03 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
捐款倡议书范文
2014/02/02 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
公司年终奖分配方案
2014/06/16 职场文书
学校周年庆活动方案
2014/08/22 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
还款承诺书范本
2015/01/20 职场文书
单位计划生育责任书
2015/05/09 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技