• 进程、线程和携程的通俗解释【刘新宇Python】


    通过下面这张图你就能看清楚了,进程、线程和携程的关系 

     进程:

    多个进程是可以运行在多个CPU当中的,比如你的电脑是4核,可以同时并行运行四个进程,这是真正物理上的并行运行。

    线程:

    每个进程又可以有多个线程,线程是轮询执行的,因为轮询的速度很快,所以可以看成是并行。

    微线程:

    携程是微线程,一个线程可以分为多个携程,同样也是轮询执行,这样的好处是减少CPU的资源消耗,一些比较多而且小的事件可以用携程去处理,减少资源的开销。

    协程原理
    生成器器
    def fun1():
      print(100)
      print(200)
      yield # 暂停代码 保存断点状态
      print(100)
      print(100)
      yield
      eventlet
      print(100)
      print(100)
    
    def fun2():
      print(100)
      print(200)
      yield
      print(100)
      print(100)
       yield
      print(100)
      print(100)
    
    gen_obj1 = fun1() # 创建了生成器器对象
    gen_obj2 = fun2()
    next(gen_obj1)
    next(gen_obj2)
    next(gen_obj1)
    next(gen_obj2)
    

      

    通常采用协程库(扩展库)来完成协程开发
    协程库能够自动帮助完成协程的执行切换

    eventlet

    from multiprocessing import Process
    p = Processs()
    p.start()
    from threading import Thread
    t = Thread()
    t.start()
    from eventlet import Eventlet
    e1 = Eventlet()

      e1.start()
      e2 = Eventlet()
      e2.start()

      

    协程运行socketio服务器器的⽅方式

    pip install eventlet
    

      

    import eventlet
    eventlet.monkey_patch()
    import socketio
    import eventlet.wsgi
    # Server对象理理解为Flask⾥里里⾯面的应⽤用对象就可以
    # sio对象是⽤用来管理理socketio即时通讯业务的
    sio = socketio.Server(async_mode='eventlet') #
    指明在evenlet模式下
    app = socketio.Middleware(sio)
    eventlet.wsgi.server(eventlet.listen(('',
    8000)), app)
    

      

    多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
  • 相关阅读:
    vue2 v-model/v-text 中使用过滤器的方法示例
    HTML5游戏开发案例教程合集
    Docker实战案例视频课程
    Java项目框架架构与优化教程
    Linux云计算-虚拟化技术视频教程
    udl
    Chloe官网及基于NFine的后台源码毫无保留开放
    抽象类存在的意义和作用
    Shell 脚本语法
    Github 高级搜索功能
  • 原文地址:https://www.cnblogs.com/LiuXinyu12378/p/11348731.html
Copyright © 2020-2023  润新知