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

Python--day41--事件和信号量之模拟连接数据库并在连接三次后抛出连接超时异常的更多相关文章
- python 管道 事件(Event) 信号量 进程池(map/同步/异步)回调函数
		
####################总结######################## 管道:是进程间通信的第二种方式,但是不推荐使用,因为管道会导致数据不安全的情况出现 事件:当我运行主进程的 ...
 - python中自定义超时异常的几种方法
		
最近在项目中调用第三方接口时候,经常会出现请求超时的情况,或者参数的问题导致调用异代码异常.针对超时异常,查询了python 相关文档,没有并发现完善的包来根据用户自定义的时间来抛出超时异常的模块.所 ...
 - python 并发编程 锁 / 信号量 / 事件 / 队列(进程间通信(IPC)) /生产者消费者模式
		
(1)锁:进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 虽然使用加锁的形式实现了 ...
 - python 线程事件
		
与进程的事件相似 # 事件,模拟连接数据库 import time from threading import Event, Thread def wait(e): while 1: e.wait(1 ...
 - javascript 事件委托,jq,js模拟事件
		
<!DOCTYPE> <html> <head> <title></title> <script src="Scripts/ ...
 - python 线程/线程锁/信号量
		
单线程 #常规写法 import threading import time def sayhi(num): # 定义每个线程要运行的函数 print("running on number: ...
 - Python学习---线程锁/信号量/条件变量同步/线程池1221
		
线程锁 问题现象: 多线程情况下,CPU遇到阻塞会进行线程的切换,所以导致执行了tmp-=1的值还未赋值给num=tmp,另一个线程2又开始了tmp -=1,所以导致最后的值重复赋值给了num,所以出 ...
 - python开发基础作业01:模拟登陆系统
		
随老男孩学习python mark 作业要求及提示:编写登录接口 ''' 练习程序:编写登录接口 1. 输入用户名和密码 2. 认证成功后显示欢迎信息 3. 输错三次后锁定 输入三次后退出,下次同样用 ...
 - Python 线程同步锁, 信号量
		
同步锁 import time, threading def addNum(): global num num -= 1 num = 100 thread_list = [] for i in ran ...
 
随机推荐
- Windows系统MySQL8.0的安装教程
			
MySQL推出的8.0版本亮点多多,尤其是两倍的提速更让我们迫不及待地安装一睹为快.然而目前我们所用的版本还在5.7之前,今天小编给家分享一下MySQL8.0的安装,尤其是多版本MySQL的共存. 方 ...
 - Loadrunner常用分析点
			
Loadrunner常用的分析点 一.在Vuser(虚拟用户状态)中 1.Running Vusers:提供了生产负载的虚拟用户运行状态的相关信息,可以帮助我们了解负载生成的结果.(即用户在几分钟左右 ...
 - 地不安装Oracle,plsql远程连接数据库
			
由于Oracle的庞大,有时候我们需要在只安装Oracle客户端如plsql.toad等的情况下去连接远程数据库,可是没有安装Oracle就没有一切的配置文件去支持.最后终于发现一个很有效的方法,Or ...
 - sas教程
			
http://web5.pku.edu.cn/pucssr/SASbiancheng.pdf 本教程中的主题将向您介绍 SAS Enterprise Guide.您最好依次浏览这些主题. 概述 启动项 ...
 - element-ui el-time-picker
			
获取时分秒时间 <el-time-picker is-range v-model="time" value-format="HH:mm:ss" range ...
 - 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
			
题目描述 在麦克雷的面前有N个数,以及一个R*C的矩阵.现在他的任务是从N个数中取出R*C个,并填入这个矩阵中.矩阵每一行的法值为本行最大值与最小值的差,而整个矩阵的法值为每一行的法值的最大值.现在, ...
 - WPF/Silverlight深度解决方案:(七)HLSL自定义渲染特效之完美攻略(中)
			
原文:WPF/Silverlight深度解决方案:(七)HLSL自定义渲染特效之完美攻略(中) 通过上一节的解说,大家是否已经对HLSL有了较深刻的认识和理解,HLSL的渲染不仅仅局限于静态处理,通过 ...
 - 人生苦短,LET'S GO! GO语言目录
			
1.Golang开山篇,GO就是NB! 1-1.go开发工具安装 2.go-人生第一个go程序和基本语法 3.go-流程控制 4.go-函数 5.go-流程控制 6.go-复合类型 7.go-面向对象 ...
 - poj 2342  hdu 1520【树形dp】
			
poj 2342 给出每个顶点的happy值,还有若干组两个顶点L,K关系,表示K是L的上司.求当K.L不同时出现时获得的happy值的最大和. 设dp[u][0]表示不选u结点时获得的最大值,dp[ ...
 - SharpDX初学者教程第4部分:绘制三角形
			
原文 http://www.johanfalk.eu/blog/sharpdx-beginners-tutorial-part-4-drawing-a-triangle 现在我们有了一个Direct3 ...