zoukankan      html  css  js  c++  java
  • gevent模块

    gevent模块

    '''gevent:
        是一个第三方模块,可以帮你监听IO操作, 并切换.
    
    - 使用gevent目的:
        为了实现单线程下,实现遇到IO, 保存状态 + 切换
    
    pip3 install gevent
    '''
    from gevent import monkey
    monkey.patch_all()  # 可以监听该程序下所有的IO操作
    import time
    from gevent import spawn, joinall  # 用于做切换 + 保存状态
    
    
    def func1():
        print('1')
        # IO操作
        time.sleep(1)
    
    def func2():
        print('2')
        time.sleep(3)
    
    def func3():
        print('3')
        time.sleep(5)
    
    start_time = time.time()
    
    s1 = spawn(func1)
    s2 = spawn(func2)
    s3 = spawn(func3)
    
    # s2.join()  # 发送信号,相当于等待自己 (在单线程的情况下)
    # s1.join()
    # s3.join()
    # 必须传序列类型
    joinall([s1, s2, s3])
    
    end_time = time.time()
    
    print(end_time - start_time)
    

    注意:from gevent import monkey;monkey.patch_all()必须放到被打补丁者的前面,如time,socket模块之前

    猴子补丁是一种大规模覆盖api的补丁,慎用

  • 相关阅读:
    文件异步上传-ajaxFileUpload
    C# 结构体
    c# nullable类型有什么用
    跨平台理论杂记
    C#类型转换
    C# is as
    C# 类
    CLR的执行模型
    C# 与 LUA 的经验对比
    C#中的Decimal类型
  • 原文地址:https://www.cnblogs.com/agsol/p/11733226.html
Copyright © 2011-2022 走看看