• 第十五章、线程之协程


    第十五章、线程之协程

    一、协程与线程和进程的区别

    协助程序,线程和进程都是抢占式特点,线程和进程的切换我们是不能参与的。

    而协程是非抢占式特点,协程也存在着切换,这种切换是由我们用户来控制的。

    二、gevent模块

    import gevent
     
    # 如果程序中没有耗时操作就顺序执行。
    def test1():
        for i in range(5):
            print('test1...', i)
            gevent.sleep(1)  # 使用耗时模块可以自动操作
      
    def test2():
        for i in range(5):
            print('test2...', i)
            gevent.sleep(1)
     
     
    if __name__ == '__main__':
        g1 = gevent.spawn(test1)
        g2 = gevent.spawn(test2)
        g1.run()
        print('程序结束了')
    

    img 说明:gevent模块中自带了sleep耗时函数,当使用这个耗时函数时,cpu会跳转到另一个就绪的程序,达到人工设置让其自动切换的功能。


    • 说明:如果需要使用time.sleep()耗时的话,需要打一个补丁
    from gevent import monkey
    monkey.patch_all()
    
    #代码如下
    import gevent
    import time
    from gevent import monkey
     
    monkey.patch_all()
     
     
     
    def test1():
        for i in range(5):
            print('test1...', i)
            time.sleep(1)
     
     
    def test2():
        for i in range(5):
            print('test2...', i)
            time.sleep(1)
     
     
    if __name__ == '__main__':
        g1 = gevent.spawn(test1)
        g2 = gevent.spawn(test2)
        g1.run()
        print('程序结束了')
    

    img

    说明:打补丁后的效率和效果和上面不打补丁的是一样的

  • 相关阅读:
    移动端兼容
    三点优化
    面向对象(一)
    BootCDN和npm
    分页逻辑
    多物体运动框架
    兼容样式
    省略
    行内元素在水平和垂直排列的时候会有间距
    [Swift]LeetCode1053.交换一次的先前排列 | Previous Permutation With One Swap
  • 原文地址:https://www.cnblogs.com/demiao/p/11557203.html
Copyright © 2020-2023  润新知