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多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
详解Python locals()的陷阱
Mar 26 Python
Python基础知识点 初识Python.md
May 14 Python
python增加图像对比度的方法
Jul 12 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
如何用Python进行时间序列分解和预测
Mar 01 Python
pytorch fine-tune 预训练的模型操作
Jun 03 Python
python中redis包操作数据库的教程
Apr 19 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
Php Cookie的一个使用注意点
2008/11/08 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
两个php日期控制类实例
2014/12/09 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
python进阶教程之循环对象
2014/08/30 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
C语言笔试集
2012/07/24 面试题
毕业生找工作的自我评价
2013/10/18 职场文书
大一军训感言
2014/01/09 职场文书
员工考核管理制度
2014/02/02 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
中学清明节活动总结
2014/07/04 职场文书
导航工程专业自荐信
2014/09/02 职场文书
公司委托书格式范本
2014/09/16 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
欢送会主持词
2015/07/01 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python