Python-多进程VS多线程

多进程VS多线程
功能:
  进程:能够完成多任务,比如,同时运行多个QQ
  线程:能够完成多任务,比如一个QQ中的多个聊天窗口
定义
  进程:系统进行资源分配和测试的一个独立单位,线程自己基本上不拥有系统资源,但是他可以与同属于一个进程的其他线程共享所拥有的全部资源
  线程:进程的一个实体,是CPU调用和分派的基本单位,他是比进程更小的能否独立运行的基本单位
    
区别:
  一个程序至少拥有一个进程,一个进程至少拥有一个线程
  线程划分的尺度小于进程(资源比进程少),使得多线程程序并发性更高
  进程在执行过中拥有独立的内存单元,而多个线程共享这段内存空间
  线程不能独立运行,必须依存进程
优缺点:
  线程的执行开销小,但不利于资源的管理和保存
  进程正好相反
资源共享
  进程:
    想实现进程间的资源共享,需要使用Manager().Queue()来实现
    多进程中,每个进程中所有数据(包括全局变量)都各自拥有一份,互不影响
  线程:
    在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享
    缺点:线程是对全局变量的随意更改可能造成多线程之间对全局变量引用比较混乱(线程安全成了问题)
进程 线程 协程定义
  进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。
  线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。
  协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。

猜你喜欢

转载自www.cnblogs.com/mswyf/p/9326071.html