Python3 进程、线程和协程

 Infi-chu:

http://www.cnblogs.com/Infi-chu/

进程、线程和协程的对比

1.定义对比

  • 进程:是系统进行资源分配的基本单位,每启动一个进程,操作系统都需要为其分配运行资源
  • 线程:是运行程序中的一个执行分支,是CPU调度的基本单位
  • 协程:在不开辟线程的基础上完成多任务,也就是在单线程的情况下完成多任务,多个任务按照一定顺序交替执行

【注】

进程是操作系统资源分配的基本单位;线程是CPU调度的基本单位

2.功能对比

  • 进程:能够完成多任务,如:一台电脑运行多个软件
  • 线程:能够完成多任务,如:在一个QQ中开启多个聊天窗口

3.关系对比

  • 线程是依附在进程里面的,没有进程就没有线程
  • 一个进程默认提供一条线程,进程可以创建多个线程
  • 一个线程里面可以有多个协程

4.区别

  • 进程之间不共享全局变量
  • 线程之间共享全局变量,需要注意资源竞争的问题。解决手段:互斥锁或线程同步
  • 创建进程的资源开销要比创建线程的资源开销大
  • 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位
  • 线程不能够独立执行,必须依存在进程中
  • 多进程开发比单进程多线程开发稳定性要强
  • 多进程、多线程根据CPU核数不一样可能是并行的,但是协程是在一个线程中执行的,所以是并发的

5.优缺点:

多进程:

  • 优点:可以用多核
  • 缺点:资源开销大

多线程:

  • 优点:资源开销小
  • 缺点:不能使用多核

协程:

  • 协程切换任务资源小,效率高
posted @ 2019-08-19 14:10  Infi_chu  阅读(541)  评论(0编辑  收藏  举报