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()

运行结果:

 

posted @ 2019-02-01 19:33  莱茵河的雨季  阅读(338)  评论(0编辑  收藏  举报