首页 > 其他分享 >递归锁

递归锁

时间:2023-09-26 15:24:31浏览次数:19  
标签:__ 优先级 name 递归 acquire put import

递归锁  了解 

特点:

可以被连续的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

相关文章

  • 方法与递归
    方法拓展了解值传递(java)和引用传递java是值传递方法重载注意:方法名称必须相同方法的参数列表必须不同(可以是个数不同,类型不同,参数列表顺序不同)可变参数(VariableParameter)可变参数的形式在方法中test(inta,doubleb,int...i),,,int...i这就是可变参数的形式......
  • lambda表达式递归报错
    lambda表达式递归报错报错代码:voidsolve(){intn=10;vector<int>adj[n+1];autodfs=[&](autoself,intu,intp)->void{for(autov:adj[u]){}};}在递归lambda表达式中引用的外部变量尽量不要出现形如......
  • SQL递归根据下拉框去获取申请人的上级
    场景:表单有下拉框,对应三个层级。下一节点的办理人需要根据这个层级去获取申请人对应的上级。 解决思路:用SQL公共表达式cte递归可以作为一个获取思路:withCTEas(selectlastname,id,manageridfromhrmresourcewhereid=2422UNIONALLselecta.lastname,a.id,a......
  • JavaScript——递归
    //递归:找到所有节点,并在每个节点上添加属性recursionMethod(data);constrecursionMethod=(array:any)=>{leti;for(iinarray){letarr=array[i];//是否存在children,存在则添加一个value属性,并赋值id//然后继续递归,查找arr.chi......
  • 递归实现树形结构数据的查询处理
    最近在做一个树形结构数据的处理,类似于俄罗斯套娃那种无限层数的那种树形结构,查询出所有数据并按层级进行展示于是做了一个小demo,数据库大概如下:处理完的数据如下:[{"id":1,"name":"零食","desc":"最初级","pid":0,"nodeSign......
  • 函数递归-汉诺塔问题
    1.问题描述:①有三根柱子X,Y,Z。X杆上有n只碟子②每次移动一块碟子,小的只能叠在大的上面③把所有碟子从X杆经Y杆全部移动到Z杆上.2.递归求解:①n<=1若只有一只碟子,直接X杆→Z杆;②n>1<1>把n-1只碟子按大小递减的次序从X杆经Z杆移动到Y杆;<2>将X杆上第n只碟子移到Z杆;<3>然后再将n-1......
  • 递归 (比较5个数的大小)
    #include<bits/stdc++.h>usingnamespacestd;intmax(inta[],intn){ intt; if(n==1){ t=a[1]; }else{ if(max(a,n-1)>a[n]){ t=max(a,n-1); }else{ t=n[a]; } } returnt;}intmain(intargc,char**argv){ inta[6]; for(inti=0;i......
  • 递归求最大值
    #include<bits/stdc++.h>usingnamespacestd;intt,n,a;intf(intn[],inta){ if(a==1){ t=n[1]; }else{ if(f(n,a-1)>n[a]){ t=f(n,a-1); }else{ t=n[a]; } } returnt;}intmain(){ intn[6],x; for(inti=0;i<5;i++){ cin>&g......
  • 递归求最大值
    #include<iostream>usingnamespacestd;intf(inta[],intn){ intt; if(n==1){ t=a[1]; }else{ if(f(a,n-1)>a[n]){ t=f(a,n-1); }else{ t=a[n]; } } returnt;}intmain(){ inta[6]; for(inti=1;i<=5;i++){ cin>>a[i]; ......
  • 【Python】递归算法
    定义递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用。思想函数调用函数本身,直到不能调用为止注意事项基本情况用于保证程序调用及时返回,不在继续递归,保证了程序可终止。递推关系,可将所有其他情况拆分到基本案例。​递推关系​:一个问题的结......