递归锁 了解
特点:
可以被连续的acquire和release
但是只能被第一个抢到这把锁执行上述操作
他的内部有一个计数器 没acquire一次技术加一 每realse一次技术减一
只要技术不为0 那么其他人都无法抢到该锁
将:mutexA=Lock()
mutexB=Lock()
换成
mutexA=mutexB=RLock()
信号两(了解)
信号量在不同的阶段可能对应不同的技术点
在并发编程中信号量指的是锁
from threading import Thread,Semaphore
import time
import random #是类 导入随机模块 例如大勇随机验证码等
sm=Semaphore(5)我做了个公共厕所 里面有个坑位(起码是一个或者一个以上)
def task(name):
sm.acquire() 抢锁
print('%s正在蹲坑'%name)
time.sleep(random.randint(1,5)) 随机的
sm.release()
if __name__=='__main__':
for i in range(20):
t=Thread(target=talk,args=('伞兵%s号'%i,))
t.start()
队列:
Queue
后进先出Q:LifoQueue 例如:q=queue.LifoQueue
优先级Q:你可以给放入队列中的数据设置进出的优先级
q=queue.PriorityQueue(4)
q.put((10,'111'))
q.put((100,'222'))
q.put((0,'333'))
q.put((-5,'444'))
结论:put括号内方一个元组 第一个放数字位置标识优先级,第二个方数字对应的值
数字越小优先级越高 先出
需要掌握:进程池与线程池
def communication():定义一个通信
进程池与线程池总结 需要记住的三行:from concurrent.futurs ThreadPoolExecutor,processPoolExecutor
pool=ProcessPoolExecutor(5)
res=pool.subimit(task,i).add_done_callback(call_back)
监管io操作:
from gevent import monkey
monkey.patch_all() 猴子补丁,这两行可以写到一行 中间加;即可
from gevent import spawn了解
。。。。。。。。。
spawn(xx)里面是函数名 可以监管这里面的io操作
例如:g1=spawn(ha)
g1.join()#等待被检测的任务执行完毕再往后执行
标签:__,优先级,name,递归,acquire,put,import From: https://www.cnblogs.com/97zs/p/17719232.html