Python--day41--事件和信号量之模拟连接数据库并在连接三次后抛出连接超时异常
#事件被创建的时候
#False状态
#wait()阻塞
#True状态
#wait() 非阻塞
#clear 设置状态为False
#set 设置状态为True
#数据库 --- 文件夹
#文件夹里有好多excel表格
#1.能够更方便的对数据进行增删改查
#2,安全访问的机制
#起两个线程
#第一个线程:连接数据库
#等待一个信号 告诉我我们之间的网络是通的
#连接数据库
#第二个线程:检测数据库的可连接情况
#time.sleep(0,2) 2
#将事件的状态设置为True
模拟连接数据库代码示例:
1 import time 2 import random 3 from threading import Thread, Event 4 5 def connect_db(e): 6 count = 0 7 while count < 3: 8 e.wait(0.5) #状态为False的时候,我只等待0.5s就结束 9 if e.is_set() == True: 10 print('连接数据库') 11 break 12 else: 13 count += 1 14 print('第%s连接失败'%count) 15 else: 16 #抛出数据库连接超时错误 17 raise TimeoutError('数据库连接超时') 18 19 def check_web(e): 20 time.sleep(random.randint(0,3)) 21 e.set() 22 23 e = Event() 24 t1 = Thread(target=connect_db,args=(e,)) 25 t2 = Thread(target=check_web,args=(e,)) 26 t1.start() 27 t2.start()
运行结果: