python线程基础学习
1. 单线程
2. 多线程并发
3. 传递参数
4. 主线程与小弟线程
5. 多线程速度
6. 线程冲突
7. 基于类实现多线程
8. 类线程的顺序执行风格
9. 类线程的乱序执行风格
10. 基于类解决线程冲突(撞车问题)
11. 死锁
12. RLOCK解决单线程死锁
13. 创建多线程的方式
14. 信号量限制线程数量
15. 栅栏锁定匹配线程数量*
+++++++++++++++++++++++++++++++++++++++++
1.单线程:
单线程即什么活都是一个人干,效率较低,在之前的学习中,程序全都是单线程运行的。
import win32api #引用系统函数
#0代表系统, "你的账户很危险"代表内容, "来自支付宝的问候"代表标题, 0-4代表对话类型
win32api.MessageBox(0,"你的账户很危险","来自支付宝的问候",2)
2.多线程并发:
多线程即多了人手同时工作,解决一件事情速度加快,但需要主要的是,并发可能会导致乱序;
import win32api #引用系统函数
import _thread #多线程
def show():
win32api.MessageBox(0, "你的账户很危险", "来自支付宝的问候", 2)
#顺序执行
#for i in range(5):
# show()
for i in range(5):
_thread.start_new_thread(show,()) #()元组,用于传递参数
show()
3.使用多线程时传递参数:
import win32api #引用系统函数
import _thread #多线程
def show(i):
win32api.MessageBox(0, "你的账户很危险"+str(i), "来自支付宝的问候", 2)
#顺序执行
#for i in range(5):
# show()
for i in range(5):
_thread.start_new_thread(show,(i,)) #()元组,用于传递参数
show(10)
运行效果:
4.主线程与小弟线程:
主线程停止即所有小弟线程不再干活,而小弟线程停止不会使主线程崩溃;这里体现的方式是,在关停所有小窗口(小弟线程)后,程序仍然在运行;
import win32api #引用系统函数
import _thread #多线程
def show(i):
win32api.MessageBox(0, "你的账户很危险"+str(i), "来自支付宝的问候", 2)
#顺序执行
#for i in range(5):
# show()
#主线程,主线程停止后小弟线程不显示
for i in range(5):
_thread.start_new_thread(show,(i,)) #()元组,用于传递参数
#阻塞,让主线程不死
while True:
pass
5.多线程的速度
多线程由于并发执行,一般而言速度会比单线程执行快许多,测试代码如下:
import _thread
import<