一,多线程的理解
简单的理解:多线程,其实就是多个用户
广义的理解:多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。
二,多线程有什么用?
多线程的好处: https://blog.csdn.net/ThatBoys/article/details/51869819
1.使用线程可以把占据时间长的程序中的任务放到后台去处理
2.用户界面更加吸引人,这样比如用户点击了一个按钮去触发某件事件的处理,可以弹出一个进度条来显示处理的进度
3.程序的运行效率可能会提高
4.在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程就比较有用了.
多线程的缺点:
1.如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.
2.更多的线程需要更多的内存空间
3.线程中止需要考虑对程序运行的影响.
4.通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生
相比单线程来说,多线程可以解决时间问题,处理业务的响应。具体举例:
我们使用jmeter去执行访问百度的接口,每次执行后等待1s,执行10次
单线程要执行上诉操作至少要耗时:10s以上 , 多线程执行只需要2s。具体操作如下:
单线程执行:![](https://i-blog.csdnimg.cn/blog_migrate/8730647378f4a26d19ee416b902b8b26.png)
多线程执行:
三,Python实现多线程的方式
一,多线程的使用
1.实现方式两种
from threading import threads
//创建treads
t = threading.Thread(target=fun,args=(i,))
t.start()
2.定义类,继承threading.Thread
class MyThread(threading.Thread): def __init__(self,func,args,name=''): #threading.Thread.__init__(self)
super(MyThread.self).__init__()#调用父类的初始化,这个推荐使用 self.name=name self.func=func self.args=args def run(self): """执行方法""
二,tomorrow模块,使用多线程,方便执行测试用例。
利用装饰器@@threads(4) 4表示线程数
https://www.cnblogs.com/yoyoketang/p/8392471.html
如下代码:
会发现使用了多线程,打印字符串,速度会提高很快。
from time import sleep
@threads(4)
def run(i):
sleep(1)
print(i)
def run2(i):
sleep(1)
print(i)
if __name__ == "__main__":
# for i in range(10):
# run()
start = time.time()
for i in range(30):
run(i)
end = time.time()
print("Time: %f seconds" % (end - start))