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])

  • 相关阅读:
    筛选法求素数
    C/C++经典面试题目
    操作系统笔试面试基本内容
    Win32/MFC的基本概念
    STL采用的标准模板库
    数据结构基本概念
    SQL基础语句
    C/C++基础概念
    计算机网络基础概念
    流水作业 批作业调度
  • 原文地址:https://www.cnblogs.com/fmgao-technology/p/9201192.html
Copyright © 2011-2022 走看看