【python】协程请求

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from  gevent import  monkey;monkey.patch_all()#协程请求一定要这句,否则没有达到协程的效果,而是按顺序等待结果返回
import gevent
import  requests
def f(url):
    print('GET: %s '%url)
    r=requests.get(url)
    data=r.text
    print(url,len(data))


gevent.joinall([
    gevent.spawn(f,"https://www.taobao.com/"),
    gevent.spawn(f,"https://www.python.org/"),
    gevent.spawn(f,"https://www.baidu.com/"),
])
#gevent.spawn(方法名,传给方法的参数)
#以上的代码的意思是当请求的时候有结果返回的需要时间,当请求遇到等待的时候协程就会让他执行第二个方法
#当哪个方法请求的结果返回最快,就运行哪个方法请求之后的代码
#以此类推
#由下面的结果可以看出,请求baidu是最快的,python是最慢的

#以上代码输出的结果为
# GET: https://www.taobao.com/
# GET: https://www.python.org/
# GET: https://www.baidu.com/
# https://www.baidu.com/ 2443
# https://www.taobao.com/ 121811
# https://www.python.org/ 47700

 

posted @ 2017-07-17 14:38  丰study  阅读(279)  评论(0)    收藏  举报