zoukankan      html  css  js  c++  java
  • 多线程

    1.什么是多线程

    多进程和多线程都是用于提高程序的效率

    多进程:核心是多道技术,本质上就是切换加保存状态,当IO比较多的时候可以提高

    效率

    什么是多线程? 程序的运行线路

    线程相当于流水线,包含了程序的具体执行步骤

    进程相相当于一个车间

    进程中包含了运行该程序所需要的所有资源,进程是一个资源单位,线程是CPU的
    最小执行单位

    每一个进程一旦被创建就默认开启了一条线程,这条线程称之为主线程

    进程与线程的关系

    进程包含线程,线程依赖进程

    2.为什么使用线程?

    为了提高程序效率,使用线程而不用进程的原因是:进程对操作系统的资源消耗非常高

    线程如何提高效率:多线程可以使CPU在一个进程内部切换,聪哥提高CPU的占用率

    3.如何使用多线程?

    两种开启线程的方式 1.实例化Thread 2.继承Thread类 覆盖run方法

    什么时间需要开启多线程? 1.当程序当中遇到IO的时候

    当程序中是纯计算任务的时候,不需要开启多线程,开启之后也无法提高效率

    4.进程和线程使用区别?

    1.进程对操作系统的资源消耗非常高,而线程低(比进程低10-100倍)

    2.在同一个进程中,多个线程之间资源是共享的

    5.守护线程(同一个进程间)

    守护线程:会在所有非守护线程结束后结束

    守护进程: 守护进程会在被守护进程死亡之后死亡

    同一个进程,可以有多个守护线程

    6.线程中常用属性


    Thread实例对象的方法
    # isAlive(): 返回线程是否活动的。
    # getName(): 返回线程名。
    # setName(): 设置线程名。

    threading模块提供的一些方法:
    # threading.currentThread(): 返回当前的线程变量。
    # threading.enumerate(): 返回一个包含正在运行的线程的list.正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
    # threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

    7. 什么时候使用互斥锁?

    当多个进程或多个线程需要修改同一份数据时,可能会造成数据的错乱,所以必须得加

    8. 信号量

    也是一种锁,特点是:可以设置数据被几个线程(进程)共享的次数

    普通锁一旦加锁则意味着这数据只能同时被一个线程使用,信号量可以让这个数据在

    同一时间让多个线程使用

    学习,学习,学习! 学习是为了更好的未来,不要让别人瞧不起你,加油!!!
  • 相关阅读:
    GOF23设计模式之适配器模式(Adapter)
    浅谈浅克隆(shallow clone)和 深克隆(deep clone)
    GOF23设计模式之原型模式(prototype)
    GOF23设计模式之建造者模式(builder)
    GOF23设计模式之工厂模式(factory)
    GOF23设计模式之单例模式(singleton)
    面向对象设计的六大基本原则
    day38 各种队列、Event事件、协程、猴子补丁
    day37 GIL、同步、异步、进程池、线程池、回调函数
    day36 joinablequeue、多线程理论、多线程的两种使用方式、守护线程、互斥锁、死锁、递归锁、信号量
  • 原文地址:https://www.cnblogs.com/yangyufeng/p/10210640.html
Copyright © 2011-2022 走看看