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()
运行结果: