python测试开发(05-多线程和锁)

与世无争的帅哥 提交于 2019-12-12 21:41:11

1.线程的启动

import threading, timeimport requests# 通过继承Thread来创建线程class RequestThread(threading.Thread):    '''发送requests请求'''    # 传其他地址,必须调用父类URL    def __init__(self, url):        self.url=url        super().__init__()    def run(self):        res=requests.get(url)        print("线程:{}===返回状态码---{}".format(threading.current_thread(), res.status_code))# 创建5个线程,发起请求s_time=time.time()for i in range(5):    t=RequestThread()    t.start()    time.sleep(3)t.join()e_time=time.time()print("耗时:",e_time-s_time)2.多个线程并发
a=100def func1():    global a    for i in range(10):        a+=1    print("1----->",a)def func2():    global a    for i in range(10):        a+=1    print("2----->",a)t1=threading.Thread(target=func1)t2=threading.Thread(target=func2)t1.start()t2.start()t1.join()t2.join()# 数量小没啥问题,数量超过10,0000,数据发生变化,资源竞争,不稳定不安全,通过锁来解决print("end---->", a)# 作业一:什么是并发和并行?'''并发:每个cpu都有一个服务,进行快速切换'''# 作业二:请创建一个线程类,每个线程对地址url="http://httpbin.org/post"发送100个请求,开启10个线程对象,同时发送,计算总耗时,分析平均每个请求所需要时间count=0class ThreadRequests(threading.Thread):        def run(self):     global count        for i in range(100):            res=requests.post("http://httpbin.org/post")                  print("线程:{}===返回状态码---{}".format(self.name, i+1))    def main(self):    s_time=time.time()    # 创建10个线程    th=[ThreadRequests() for j in range(10)]    # 遍历线程对象    for i in th:        i.start()    # 遍历线程对象,让主线程等待子线程结束之后,往下执行    for j in th:        j.join()    e_time=time.time()    print("平均时间:{}".format(e_time-s_time)/1000)main()    
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!