zoukankan      html  css  js  c++  java
  • 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()

    运行结果:

  • 相关阅读:
    mac iterm2配置
    Test注解的两个属性(转)
    稳定排序和不稳定排序(转)
    [转]异步机制与异步原理
    Flex学习笔记
    [转]有道云笔记markdown
    H5调试
    react生命周期方法
    ESLint 代码检查规范
    REST API
  • 原文地址:https://www.cnblogs.com/xudj/p/10346823.html
Copyright © 2011-2022 走看看