如何实现一个业务系统的自动化框架搭建 首先创建如下几个目录common(公共模块)、config(公共配置)、logs(运行日志)、reports(测试报告)、resources(测试资源)、testcases(测试用例)、utils(工具脚本)。common目录下主要存放着各个业务模块的关键字封装(cass_step)和一些公用的场景,如连接数据库、读取配置文件内容、获取登录用户token、request请求封装。config.ini用来管理多套测试环境(dev、sit、uat),config.py用来管理项目目录的存取。
多线程爬取免费代理IP 思路:1、找到一家免费的高匿代理IP网站,解析网页结构获取有用的内容def get_html(url, headers): try: r = requests.get(url, headers=headers, timeout= 10) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return ""def get_proxy(html): soup = Bea
快速验证代理IP是否可用 利用的http://icanhazip.com/返回的IP进行校验,如返回的是代理池的IP,说明代理有效,否则实际代理无效import requestsrequests.adapters.DEFAULT_RETRIES = 3res1 = requests.get("http://icanhazip.com/",proxies={'http':"120.24.91.188:8080"},timeout=6)print(res1.text)上面这个如果打印出来的是 你放入proxies中的
python中的锁 一、全局解释器锁(GIL)1、什么是全局解释器锁每个CPU在同一时间只能执行一个线程,那么其他的线程就必须等待该线程的全局解释器,使用权消失后才能使用全局解释器,即使多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局解释器锁(GIL)。GIL的设计简化了CPython的实现,使的对象模型包括关键的内建类型,如:字典等,都是隐含的,可以并发访问的,锁住全局解释器使得比较容易的实现对多线程的支持,但也损失了多处理器主机的并行计算能力。2、全局解释器锁的好处1、避免
进程、线程和协程 进程与线程之间的关系线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。python 线程Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。1、threading模块threading 模块建立在 _thread 模块之上。thread
同步和异步 定义:同步和异步关注的是消息通信机制(synchronous communication/ asynchronous communication)。同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用同步执行异步执行同步异步和阻塞非阻塞区分阻塞和非阻塞强调的是程序在等待调用结果(消息,返回值)时的状态....
并行和并发 并行和串行:串行:一次只能取得一个任务并执行这一个任务 并行:可以同时通过多进程/多线程的方式取得多个任务,并以多进程或多线程的方式同时执行这些任务 注意点: 如果是单进程/单线程的并行,那么效率比串行更差 如果只有单核cpu,多进程并行并没有提高效率 从任务队列上看,由于同时从队列中取得多个任务并执行,相当于将一个长任务队列变成了短队列 并发:并发是一种现象:同时运行多个程序或多个任务需要被处理的现象 这些任务可能是并行执行的,也可能是串行执行的,和CPU核心数无关,是操作系统
Python高级——@property @property是python的一种装饰器,是用来修饰方法的。作用:可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的制度属性,可以与所定义的属性配合使用,这样可以防止属性被修改。使用场景1、修饰方法,使方法可以像属性一样访问。class DataSet(object): @property def method_with_property(self): ##含有@property return 15 def meth
Python——类的魔法属性 目录__doc____module__和__class____init____del____call____dict____str____getitem__/__setitem__/__delitem____getslice__/__setslice__/__delslice____doc__表示类的描述信息__module__和__class____module__:表示当前操作的对象在哪个模块__class__:表示当前操作的对象的类时什么
Python高级——实例方法、静态方法和类方法 实例方法实例方法最大的特点就是,它最少也要包含一个self参数,用于绑定调用此方法的实例对象(python会自动完成绑定)。class CLanguage: #类构造方法,也属于实例方法 def __init__(self): self.name = "C语言中文网" self.add = "http://c.biancheng.net" # 下面定义了一个say实例方法 def say(self): print("正
详解python中的多线程编程 目录一、简介二、详解1、线程和进程2、使用线程2.1全局解释器锁(GIL)2.2 退出线程2.3 python的线程模块3、thread模块4、threading模块4.1 threading的Thread类4.2 threading模块中的其他函数5、Queue模块6、线程相关模块三、总结一、简介多线程编程技术可以实现代码并行性,优化处理能力,同时功能的更小划分可以使代码的可重用性更好。Python中threading和Queue模块可以用来
MySQL面试知识点总结 数据库三大范式是什么第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是只依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。MyISAM索引与InnoDB索引的区别InnoDB索引是聚簇索引,MyISAM索引是非聚簇索引。InnoDB的主键索引的叶子结点存储着行数据,因此主键索引非常高效。MyISAM索引的叶子节
网络编程——TCP/UDP 一、TCP/IP网络模型计算机与网络设备要互相通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要实现确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议。...