今日学习总结2.24

一、线程

  一个进程里面至少要有一个线程,主进程里面的线程称为主线程,其他进程里的线程称为子线程

  进程是资源分配的最小单位,线程是CPU调度的最小单位,每一个进程中至少有一个线程。

  协程:在单线程下开启的协程,程序员来开。

  线程才是真正干活的人

二、如何开启线程

  跟开启进程差不多

  今日学习总结2.24

 

   成功开启一个线程

三、进程和线程的区别

  1.进程的开销远远大于线程的开销

  进程里面可以开很多个线程

  2.进程能利用多核优势,线程就不能利用多核优势

  但是,可以开启多个进程,在进程里面再开启线程

  3.进程之间的数据隔离的,线程之间的数据不是隔离的,前提:同一个进程之间

四、Thread类中的几个方法

  今日学习总结2.24

 

 五、多线程实现socket

  今日学习总结2.24

 

 六、GIL锁(全局解释器锁)

  Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行

  对Python解释器的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同一时刻只有一个线程在运行

  1.我们写的代码其实是解释器在执行:

    cpython解释器,pypy解释器...

  2.GIL锁只存在cpython解释器中,在其他解释器中不存在

  3.起一个垃圾回收的线程,起一个正常执行代码的线程,当垃圾回收线程还没有把垃圾回收完毕的时候,会

出现抢占资源的情况

  4.我们就需要拿到GIL锁,想要让线程能够正常执行,那么,线程就必须要拿到这把GIL锁

  5.保证了同一时刻只有一个线程在执行

    进程:可以利用多核

    线程:不能利用多核

    i/o密集型:不需要计算,一般不消耗CPU,所以就选择线程比较好

    计算密集型:在消耗CPU,所以最好选择进程

七、同步锁(互斥锁)

  开多进程或者线程一定好吗?

    不一定,虽然可以提高效率,但是,会出现安全问题

  今日学习总结2.24

 

 

上一篇:省选模拟6


下一篇:Mysql 根据经纬度 坐标查询 区域范围 所有坐标 并按距离进行排序