十、线程理论
线程理论
致命三问
-
什么是线程
进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。
''' 进程:资源单位 线程:执行单位 将操作系统比喻成一个打的工厂 那么进程就相当于工厂里面的车间 而线程就是车间里面的流水线 每一个进程坑定自带一个线程 再次总结: 进程:资源单位(创建一个进程仅仅只是在内存空间中开辟一块独立的空间) 线程:执行单位(真正被CPU执行的其实是进程里面的线程,线程指的就是代码的执行过程,执行代码中所需要使用到的资源都找所在的进程索要) 多线程:在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间 进程和线程都是虚拟单位,只是为了我们更加方便的描述问题 ''' -
为何要有线程
""" 开设进程 1.申请内存空间 耗资源 2.“拷贝代码” 耗资源 开线程 一个进程内可以开设多个线程,在同一个进程内开设多个线程无需再次申请内存空间操作 总结: 开设线程的开销要远远小于进程的开销 同一个进程下的多个线程数据是共享的 """ 案例: 我们要开发一款文本编辑器 1.获取用户输入的功能 2.实时展示到屏幕的功能 3.自动保存到硬盘的功能 针对上面三个功能,开设线程更合适 1.数据同步 2.资源消耗少 -
如何使用
python3 多线程
在python中,一个程序至少拥有一个线程,这个线程称之为主线程
多线程类似于同时执行多个不同程序,多线程运行有如下优点:
- 使用线程可以把占据长时间的程序中的任务放到后台去处理。
- 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。
- 程序的运行速度可能加快。
- 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。
指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。
- 线程可以被抢占(中断)。
- 在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) -- 这就是线程的退让。
线程可以分为:
- 内核线程:由操作系统内核创建和撤销。
- 用户线程:不需要内核支持而在用户程序中实现的线程。
Python3 线程中常用的两个模块为:
- _thread
- threading(推荐使用)
**thread 模块已被废弃。用户可以使用 threading 模块代替。所以,在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 "_thread"。

浙公网安备 33010602011771号