IT评测·应用市场-qidao123.com

标题: 多线程(一) [打印本页]

作者: 拉不拉稀肚拉稀    时间: 2023-4-22 18:29
标题: 多线程(一)
一:什么是多线程

线程是操作系统能够进行运算调度的最小单位;它被包含在进程之中,是进程中的实际运作单位。
多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
简单来说:线程是程序中一个单一的顺序控制流程;而多线程就是在单个程序中同时运行多个线程来完成不同的工作。
多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。多线程是在同一时间需要完成多项任务的时候实现的。
二:多线程优缺点

优点:

缺点

三:python threading 模块

threading模块是python的内置库,所以无需用pip去下载直接调用就行
  1. import threading
复制代码
注意这里的Thread是大写,因为python对字母的大小写十分敏感
四:多线程开发

1.创建一个Thread对象,并封装线程
  1. t = threading.Thread(target=calculate,args=(n,))
复制代码
第一个参数是线程函数变量,第二个参数args是一个数组变量参数,如果只传递一个值,就只需要n, 如果需要传递多个参数,那么还可以继续传递下去其他的参数,其中的逗号不能少,元组中只包含一个元素时,需要在元素后面添加逗号
2.常见方法
  1. t.start() #线程准备,开始执行
复制代码
  1. t.join() #等待线程任务结束,在向下执行
复制代码
3.线程的简单运用(节省时间)

一个线程(代码依次执行)
  1. ```plaintext
  2. import time
  3. def calculate(n):
  4.     for x in n:
  5.         time.sleep(1)
  6.         print('除法',x%2)
  7. def calculate2(n):
  8.     for x in n:
  9.         time.sleep(1)
  10.         print('乘法',x*2)
  11. n=[1,2,3,4,5,6,7,8]
  12. start=time.time()
  13. calculate(n)
  14. print()
  15. calculate2(n)
  16. end=time.time()
  17. print(end-start)
复制代码
单线程运行俩函数所需的时间为16.106837511062622s
多线程
  1. import threading
  2. import time
  3. def calculate(n):
  4.     for x in n:
  5.         time.sleep(1)
  6.         print('除法',x%2)
  7. def calculate2(n):
  8.     for x in n:
  9.         time.sleep(1)
  10.         print('乘法',x*2)
  11. n=[1,2,3,4,5,6,7,8]
  12. start=time.time()
  13. t1 = threading.Thread(target=calculate,args=(n,))
  14. t2 = threading.Thread(target=calculate2,args=(n,))
  15. t1.start()
  16. time.sleep(2)
  17. t2.start()
  18. t1.join()
  19. t2.join()
  20. end = time.time()
  21. print(end-start)
复制代码
多线程所需时间为10.068055391311646s
五:总结:

以上是多线程中最最最基础的东西
相比之下多线程的效率要比单线程的效率要高,也比较节约时间

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4