十、线程理论

线程理论

致命三问

  • 什么是线程

    进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。

    '''
    进程:资源单位
    线程:执行单位
    
    将操作系统比喻成一个打的工厂
    	那么进程就相当于工厂里面的车间
    	而线程就是车间里面的流水线
    
    每一个进程坑定自带一个线程
    
    再次总结:
    	进程:资源单位(创建一个进程仅仅只是在内存空间中开辟一块独立的空间)
    	线程:执行单位(真正被CPU执行的其实是进程里面的线程,线程指的就是代码的执行过程,执行代码中所需要使用到的资源都找所在的进程索要)
    
    多线程:在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间
    
    
    进程和线程都是虚拟单位,只是为了我们更加方便的描述问题
    '''
    
  • 为何要有线程

    """
    开设进程
    	1.申请内存空间	耗资源
    	2.“拷贝代码”	耗资源
    
    开线程
    	一个进程内可以开设多个线程,在同一个进程内开设多个线程无需再次申请内存空间操作
    	
    总结:
    	开设线程的开销要远远小于进程的开销
    	同一个进程下的多个线程数据是共享的
    """
    案例:
    	我们要开发一款文本编辑器
        	1.获取用户输入的功能
            2.实时展示到屏幕的功能
            3.自动保存到硬盘的功能
         针对上面三个功能,开设线程更合适
        	1.数据同步
            2.资源消耗少
    
  • 如何使用

python3 多线程

在python中,一个程序至少拥有一个线程,这个线程称之为主线程

多线程类似于同时执行多个不同程序,多线程运行有如下优点:

  • 使用线程可以把占据长时间的程序中的任务放到后台去处理。
  • 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。
  • 程序的运行速度可能加快。
  • 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。

指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。

  • 线程可以被抢占(中断)。
  • 在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) -- 这就是线程的退让。

线程可以分为:

  • 内核线程:由操作系统内核创建和撤销。
  • 用户线程:不需要内核支持而在用户程序中实现的线程。

Python3 线程中常用的两个模块为:

  • _thread
  • threading(推荐使用)

**thread 模块已被废弃。用户可以使用 threading 模块代替。所以,在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 "_thread"。

posted @ 2021-06-03 00:28  zzwYYYYYY  阅读(59)  评论(0)    收藏  举报