zoukankan      html  css  js  c++  java
  • Python3 进程、线程和协程

     Infi-chu:

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

    进程、线程和协程的对比

    1.定义对比

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

    【注】

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

    2.功能对比

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

    3.关系对比

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

    4.区别

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

    5.优缺点:

    多进程:

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

    多线程:

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

    协程:

    • 协程切换任务资源小,效率高
  • 相关阅读:
    Spring知识整理
    业务开发(四)—— 服务器
    TCP/IP协议知识整理
    XSS
    Java并发编程(一) —— 线程
    业务开发(三)—— 前端
    Effective Java——(一)创建和销毁对象
    Java编程思想——异常
    Git使用
    网络基础(一)
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/11376801.html
Copyright © 2011-2022 走看看