【跟我学Python】第四章. Python多线程编程
在Python中我们主要是通过thread和 threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用 threading模块实现多线程编程。
Thread 线程类,用的最多的一个类,可以指定线程函数执行或者继承自它都可以实现子线程功能;
Timer与Thread类似,但要等待一段时间后才开始运行;
Lock 锁原语,这个我们可以对全局变量互斥时使用;
RLock 可重入锁,使单线程可以再次获得已经获得的锁;
Condition 条件变量,能让一个线程停下来,等待其他线程满足某个“条件”;
Event 通用的条件变量。多个线程可以等待某个事件发生,在事件发生后,所有的线程都被激活;
Semaphore为等待锁的线程提供一个类似“等候室”的结构;
BoundedSemaphore 与semaphore类似,但不允许超过初始值;
Queue:实现了多生产者(Producer)、多消费者(Consumer)的队列,支持锁原语,能够在多个线程之间提供很好的同步支持。
setDaemon(self, daemonic) 把线程的daemon标志设为daemonic
Thread类:主要的线程类,可以创建进程实例。
getName(self) 返回线程的名字
isAlive(self) 布尔标志,表示这个线程是否还在运行中
isDaemon(self) 返回线程的daemon标志
join(self, timeout=None) 程序挂起,直到线程结束,如果给出timeout,则最多阻塞timeout秒
run(self) 定义线程的功能函数
setName(self, name) 设置线程的名字
start(self) 开始线程执行
Queue类
Queue队列
LifoQueue后入先出(LIFO)队列
PriorityQueue 优先队列
接下来,我们用一个一个示例来展示threading的各个功能,包括但不限于两种方式起线程、threading.Thread类的重要函数、使用Lock互斥及RLock实现重入锁、使用Condition实现生产者和消费者模型、使用Event和Semaphore多线程通信。
相关推荐
制作俄罗斯方块游戏,我需要使用编程工具tkinter模块来制作游戏界面窗口,并使用threading模块来实现游戏多线程运行。我一开始面对实训的题目的时候不知所措,在写代码初期,我是没有任何思路的,因为这跟平时做的...
标题 "python爬取wb图跟视频" 暗示了我们正在讨论如何使用Python编程语言来抓取微博(wb)上的图像和视频内容。在这个过程中,我们将深入探讨Python网络爬虫的基本概念,以及如何处理微博特定的反爬机制。 描述 ...
网上找很多文章也都不很清晰,只有for全开线程,没有控制线程数的具体说明,最终终于根据多篇文章和官方文档算是搞明白基础的多线程怎么实现法了,怕长时间不用又忘记,找着麻烦就贴这了,跟我一样新手也可以参照...
在本教程"跟我学Spring3(9.4)Spring的事务之声明式事务"中,我们将深入探讨Spring如何通过声明式事务管理来简化应用程序的事务处理。 声明式事务管理是Spring提供的一种高级事务管理方式,它允许开发者在不直接...
标题中的“2022跨年烟花代码2022”指的是通过编程方式实现的跨年烟花模拟程序,而描述中的“现在许多地方已经限制不准...这是一段巧妙地结合了数学、图形学和多线程技术的代码,为跨年庆祝提供了一种新颖且环保的方式。
因此,一般我们必须要使用一个数据库连接池,也就是说在一个池子里维持多个数据库连接,让多个线程使用池子里的不同的数据库连接去执行SQL语句,然后执行完SQL语句之后,不要销毁这个数据库连接,而是把连接放回池子...