zoukankan      html  css  js  c++  java
  • python之 协程

    协程: 协程是一种用户态的轻量级线程, 即协程是由用户程序自己控制调度的

    1.Greenlet

    import time
    # import greenlet
    from greenlet import greenlet
    def f1(s):
        print('第一次f1'+s)
        g2.switch('taibai')  #切换到g2这个对象的任务去执行
        time.sleep(1)
        print('第二次f1'+s)
        g2.switch()
    def f2(s):
        print('第一次f2'+s)
        g1.switch()
        time.sleep(1)
        print('第二次f2'+s)
    g1 = greenlet(f1)  #实例化一个greenlet对象,并将任务名称作为参数参进去
    g2 = greenlet(f2)
    g1.switch('alex') #执行g1对象里面的任务

    2.Gevent

    import gevent
    from gevent import monkey;monkey.patch_all()
    import time
    import threading
    
    def f1():
        print('第一次f1')
        # print(threading.current_thread().getName())
        # gevent.sleep(1)
        time.sleep(2)
        print('第二次f1')
    
    def f2():
        # print(threading.current_thread().getName())
        print('第一次f2')
        # gevent.sleep(2)
        time.sleep(2)
        print('第二次f2')
    
    s = time.time()
    g1 = gevent.spawn(f1) #异步提交了f1任务
    g2 = gevent.spawn(f2) #异步提交了f2任务
    # g1.join()
    # g2.join()
    gevent.joinall([g1,g2])
    e = time.time()
    print('执行时间:',e-s)
    print('主程序任务')
  • 相关阅读:
    += 和 =+
    Ubuntu分区方案(菜鸟方案、常用方案和进阶方案)
    Apache ab测试工具使用方法(无参、get传参、post传参)(转)
    硬盘安装ubuntu遇到的问题
    Promise
    A Kill Cord for your Laptop
    python 2week
    PDCA循环原理
    python自学基础1week
    14链表中倒数第k个结点
  • 原文地址:https://www.cnblogs.com/q455674496/p/10267265.html
Copyright © 2011-2022 走看看