zoukankan      html  css  js  c++  java
  • 并发编程~~~多线程~~~线程queue, 事件event,

    一 线程queue

    多线程抢占资源,只能让其串行.

    1. 互斥锁
    2. 队列
    import queue
    q = queue.Queue() # 先进先出
    q = queue.LifoQueue() # 先进后出
    q = queue.PriorityQueue() # 优先级队列
    q.put((1,'小虎'))
    q.put((3,'大黑'))
    q.put((2,'李业'))
    print(q.get())
    print(q.get())
    print(q.get())
    

    二 事件event

    开启两个线程,一个线程运行到中间的某个阶段,触发另一个线程执行.两个线程增加了耦合性.

    from threading import Thread,current_thread,Event
    import time
    event = Event()
    def check():
        print(f'{current_thread().name}监测服务器是否开启...')
        time.sleep(3)
        event.set() # 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态,等待操作系统调度.
        print('服务器已开启...')
    
    def connect():
        count = 1
        while not event.is_set(): # 返回event的状态值
            if count == 4:
                print(f'{current_thread().name}连接失败')
                break
            print(f'{current_thread().name}等待连接{count}次...')
            event.wait(1) # 延迟1秒,如果 event.is_set()==False将阻塞线程
            count += 1
        else:
            print(f'{current_thread().name}连接成功')
    
    t1 = Thread(target=check)
    t2 = Thread(target=connect)
    t1.start()
    t2.start()
    
  • 相关阅读:
    CSRF
    PHP XXE漏洞
    jumpserver安装与部署
    ELK
    docker pull下来的镜像放哪儿了?
    MobSF 框架安装使用部署
    加密流量分析
    Pόlya定理-学习笔记
    所有区间异或的和的 一个加强
    计算一个序列有多少个不同的01子序列
  • 原文地址:https://www.cnblogs.com/lav3nder/p/11802349.html
Copyright © 2011-2022 走看看