线程 :
开启线程:
from threading import Thread
t = Thread(target = func, args =(i,)
t.start() # 开始线程
t.clock() # 关闭向操作系统申请线程
Thread的方法:
锁 :
互斥锁 Lock
在一个线程中不能连续多次使用acquire
lock = Lock() #创建一把锁
lock.acquire()获取钥匙
lock.release()归还钥匙
递归锁 RLock
在一个线程中可以多次使用acquire
可以快速回复死锁的服务
lock = RLock() #创建一把递归锁
lock.acquire()
lock.release()
信号量 Semaphore: 互斥锁+计数器
s = Semaphore(5) #限制几个线程同时获取锁的钥匙
事件 Event
e = Enent() 创建一个事件
e.wait() #等待状态True 非阻塞
e.set() 设置信号变成True
e.clear() 设置信号变成False
is_set 查看信号是否为True
定时器 : Timer
t = Timer(0.5,func) # 创建线程时候就规定多久执行
条件 : Condition
acquire 获取钥匙
release 归还钥匙
wait 阻塞
notify 解除wait的阻塞