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()
来源:https://www.cnblogs.com/vivian0119/p/12031293.html