这篇教程Python多线程即相关理念详解写得很实用,希望能帮到您。
一、什么是线程?线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程。车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一个流水线。所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。 总结进程与线程区别: '''进程:资源单位线程:执行单位线程才是真正干活的人,干活中需要的资源由线程所在进程提供每个进程肯定自带一个线程每个进程内可创建多个线程''''''开进程: 申请空间 拷贝代码 消耗资源大开线程: 同一个进程内创建多个线程,无需上述两种操作,消耗资源相对较小''' 多线程(即多个控制线程)的概念是,在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源。
二、开启线程的两种方式
1、方式1from threading import Threadimport time# 方法一def task(name): print('%s is running' % name) time.sleep(1) print('%s is over' % name)# 开启线程不需要在main下面执行代码,直接书写就可以# 但是习惯性的将启动命令写在main下面t = Thread(target=task, args=('egon',))t.start() # 创建线程的开销非常小,几乎是代码一执行就已经创建了print('主')''' 运行结果: egon is running 主 egon is over '''
2、方式2from threading import Threadclass MyThread(Thread): def __init__(self, name): # 重写了别人的方法,又不知道别人的方法里有啥,就调用父类的方法 super().__init__() self.name = name def run(self): print('%s is running' % self.name) time.sleep(1) print('%s is over' % self.name)if __name__ == '__main__': t = MyThread('egon') t.start() print('主')''' 运行结果: egon is running 主 egon is over '''
三、线程对象的jion方法()看过我讲解进程文章的小伙伴想必都知道jion的功能,线程的jion方法于进程的jion方法功能类似-等待一个线程执行完毕后再执行下一个线程 from threading import Threaddef task(name): print('%s is running' % name) time.sleep(1) print('%s is over' % name)if __name__ == '__main__': t=Thread(target=task,args=('egon',)) t.start() t.join()# 主线程等待子线程运行结束后再执行 print('主') 深入学习Python+Opencv常用四种图像处理操作 Python调用百度AI实现颜值评分功能
|