zoukankan      html  css  js  c++  java
  • python的协程,monkeyPatch

    monkey patch 一般指运行时候进行动态替换.
    基本上我们使用gevent,会在最开头的地方加入gevent.monkey.patch_all();把标准库中的thread/socket等给替换掉.这样我们在后面使用socket的时候它会变成非阻塞的了.而我们却什么也不用做.

    一个案列

    
    from gevent import monkey; monkey.patch_all()
    import gevent
    from urllib import request
    
    
    
    def run_task(url):
        print("开始访问 --> %s" % url)
        try:
            response = request.urlopen(url)
            data = response.read()
            print("{} bytes received from {}".forma(len(data), url))
        except Exception:
            print("访问中出错了")
    
    if __name__ == '__main__':
        urls = ['https://baidu.com/', 'https://github.com','https://blog.csdn.net/', 'https://cnblogs.com/lovesKey']
        # 定义协程方法
        greenlets = [gevent.spawn(run_task, url) for url in urls]
        # 添加协程任务,并且启动运行
        gevent.joinall(greenlets)
    
    

    最快访问结束的会在第一位,最慢的会在最后一位.
    输出结果:

    Visit --> https://baidu.com/
    Visit --> https://github.com
    Visit --> https://blog.csdn.net/
    Visit --> https://cnblogs.com/lovesKey
    154097 bytes received from https://baidu.com/.
    26813 bytes received from https://cnblogs.com/lovesKey.
    155908 bytes received from https://blog.csdn.net/.
    86916 bytes received from https://github.com.
    
  • 相关阅读:
    黑马java课程2222
    屏幕亮度软件和一些自己必用的软件设置
    ahk保存
    天天洗一次澡还真是好方法
    自动化测试 就这两张图
    python __init__.py用途
    bash检查文件格式
    cygwin中运行命令提示command not found的解决方法
    Python批量插入SQL Server数据库
    怎样去掉FireFox的导入向导
  • 原文地址:https://www.cnblogs.com/lovesKey/p/11192515.html
Copyright © 2011-2022 走看看