?
?
#! /usr/bin/env python3 # -*- coding:utf-8 -*-from urllib import request import gevent,time from gevent import monkeymonkey.patch_all() # 把當前程序中的所有io操作都做上標記def spider(url):print("GET:%s" % url)resp = request.urlopen(url)data = resp.read()print("%s bytes received from %s.." % (len(data), url))urls = ["https://weibo.com/","https://www.baidu.com/","https://www.yinxiang.com/" ]start_time = time.time() for url in urls:spider(url) print("同步耗時:",time.time() - start_time)async_time_start = time.time() gevent.joinall([gevent.spawn(spider,"https://weibo.com/"),gevent.spawn(spider,"https://www.baidu.com/"),gevent.spawn(spider,"https://www.yinxiang.com/"), ]) print("異步耗時:",time.time() - async_time_start)
redis的io多路復用機制,輸出
GET:https://weibo.com/ 6117 bytes received from https://weibo.com/.. GET:https://www.baidu.com/ 227 bytes received from https://www.baidu.com/.. GET:https://www.yinxiang.com/ 16505 bytes received from https://www.yinxiang.com/.. 同步耗時: 0.23460006713867188 GET:https://weibo.com/ GET:https://www.baidu.com/ GET:https://www.yinxiang.com/ 227 bytes received from https://www.baidu.com/.. 16505 bytes received from https://www.yinxiang.com/.. 6117 bytes received from https://weibo.com/.. 異步耗時: 0.0946660041809082
?