zoukankan      html  css  js  c++  java
  • gevent异步,io自动切换

    #!/usr/bin/env python
    # encoding: utf-8  
    # Date: 2018/6/19

    # # from gevent import monkey  # 这俩行必须放在首行,下面就可以使用time(非gevent)的io
    # # monkey.patch_all()  # 相当于把所有的io操作打了标记,把io阻塞操作变成了非阻塞操作
    # # gevent遇到io都可以自动切换
    # import gevent
    # import time
    #
    #
    # def eat(name):
    #     print('%s eat 1' % name)
    #     gevent.sleep(3)  # 相当于io操作
    #     # time.sleep(3)  # gevent不识别,只是别自己的io
    #     print('%s eat 2' % name)
    #
    #
    # def play(name):
    #     print('%s play 1' % name)
    #     gevent.sleep(4)
    #     print('%s play 2' % name)
    #
    #
    # start_time = time.time()
    # g1 = gevent.spawn(eat, 'egon')  # 提交任务是异步提交
    # g2 = gevent.spawn(play, 'alex')
    #
    # g1.join()
    # g2.join()
    # stop_time = time.time()
    # print(stop_time - start_time)  # 4.005170583724976

    # gevent 异步提交任务
    from gevent import monkey;monkey.patch_all()  # 必须在首行
    import gevent
    import time


    def eat(name):
        print('%s eat 1' % name)
        time.sleep(3)
        print('%s eat 2' % name)


    def play(name):
        print('%s play 1' % name)
        time.sleep(4)
        print('%s play 2' % name)


    g1 = gevent.spawn(eat, 'egon')  # 提交任务是异步提交
    g2 = gevent.spawn(play, 'alex')

    # time.sleep(5)  # 保证线程在5秒内可以执行完
    # g1.join()  # 同上一行代码,不用考虑时间
    # g2.join()

    # 终极
    gevent.joinall([g1, g2])

  • 相关阅读:
    Tomcat解压版Windows配置(运行环境非开发环境)
    idea排除要编译的文件
    DispatcherServlet继承体系
    nested exception is java.lang.IllegalArgumentException: warning no match for this type name: res [Xlint:invalidAbsoluteTypeName]
    Spring框架之一 读取配置文件
    初识MyBatis-Generator
    jmeter源代码开发环境构建
    tail
    tps抖动
    Centos系统更改yum源为163
  • 原文地址:https://www.cnblogs.com/fmgao-technology/p/9201192.html
Copyright © 2011-2022 走看看