zoukankan      html  css  js  c++  java
  • python基础===基于requests模块上的协程【trip】

    今天看博客get了一个有趣的模块,叫做 trip     #(pip install  trip)

    兼容2.7版本

    基于两大依赖包:TRIP: Tornado & Requests In Pair

    先看一下simple code:

    import trip
    
    @trip.coroutine
    def main():
        r = yield trip.get('http://www.baidu.com/‘)
        print(r.content)
    
    trip.run(main)

    于是又做了一个比较:

    import time, functools
    import requests,trip
    
    
    
    def timeit(fn):
        start_time = time.time()
        fn()
        return time.time() - start_time
    
    url = 'https://www.baidu.com/'
    times = 100
    
    def fetch():
        r = [requests.get(url) for i in range(times)]
        return r
    
    @trip.coroutine
    def  async_fetch():
        r = yield[trip.get(url) for i in range(times)]
        raise trip.Return(r)
    
    
    print("[+]Non-trip cost: %ss" % timeit(fetch))
    print("[+]Trip cost: %ss" % timeit(functools.partial(trip.run,async_fetch)))


    #result
    #[+]Non-trip cost: 14.9129998684s
    #[+]Trip cost: 1.83399987221s

    14.9秒和1.8秒的差距,效果显而易见!

    在爬虫中的比较,普通爬虫:

    import requests
    
    url = 'http://httpbin.org'
    s = requests.Session()
    
    def fetch(times=10):
        s.get('%s/cookies/set?name=value' % url)
        r = [s.get('%s/get' % url) for i in range(times)]
        print r
    
    fetch()

    加入trip优化后的:

    import trip
    
    url = 'http://httpbin.org'
    s = trip.Session()
    
    @trip.coroutine
    def fetch(times=10):
        yield s.get('%s/cookies/set?name=value' % url)
        r = yield [s.get('%s/get' % url) for i in range(times)]
        print r
    
    trip.run(fetch)

    在原基础上更改不大。

    顺便提一下


    如果你也喜欢Python 这里有一群Python爱好者汇集在此。

    关注微信公众号:【软件测试技术】,回复 888,获取QQ群号。 

  • 相关阅读:
    HDFS镜像文件的解析与反解析
    HDFS镜像文件的解析与反解析
    Nginx将通过IP访问重定向
    Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法
    PHP个人常用函数封装
    apache禁止公网IP访问的配置
    Linux查看端口被哪个进程占用
    Nginx负载均衡配置
    Nginx反向代理配置文件
    Apache多端口配置
  • 原文地址:https://www.cnblogs.com/botoo/p/7808316.html
Copyright © 2011-2022 走看看