并发编程~~~多线程~~~线程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()
posted on 2019-11-05 22:54  Lav3nder  阅读(131)  评论(0编辑  收藏  举报