进程队列与线程队列的区别

进程切换耗费大量资源

线程特点:进程执行的基本单元qq功能

  1. 共享进程的资源,
  2. 切换少

一个程序至少包含一个进程,一个进程至少包含一个线程,进程只是一个容器,真正执行的是线程

进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提升了程序运行效率

线程是最小的执行单元,进程是最小的资源单位,是操作系统运行程序的基本单位。

一个线程可以创建或者撤销另一个线程,同一进程中的多个线程之间可以并发执行。

守护进程的概念:子线程守护主线程,主线程退出,子线程不管结束与否都中断执行。

同步锁:

并发:系统具备处理多个任务的能力。

并行:系统具备同时处理多个任务的能力。

同步:当一个进程需要接受外部的数据时(IO操作),阻塞

异步:

为什么有的时候使用多线程反而要耗费更多的时间?:充斥着大量的切换

 

全局解释器锁:GIL(跟python没关系,与python的解释器有关系)

目的:在同一时刻只能一个进程中只能有有一个线程被运行(不管有多少cpu,不管启动多少线程)  

操作系统切换的因素:IO和时间轮询两种情况。

优化解决办法:

  1. 把线程发在多个进程中

影响:进程开销大

  1. 最好优化方法:多进程+协程

任务分为:IO密集型、计算密集型

对于io密集型的任务,python的多线程有意义,对于计算密集型的任务python的多线程可以采用多进程

 

同步锁:(100个线程同时操作一个数据,需要用到同步锁,比如下订单)通常被用来实现共享资源的同步访问,为每一个共享资源创建一个Lock对象当你需要访问该资源时,调用qcuqire方法来获取锁对象(如果其他线程已经获得该锁,则当前线程需等待期被释放),待资源访问完后,在调用release方法释放锁

死锁

 python下多线程的特点:没法利用多核,意味着无法实现真正的并行的效果。并不是一无是处,其意义:

 

解决办法:1.多进程

2.所进程+协程

协程: