Python协程的使用
#!/usr/bin/evn python# -*- coding:utf-8 -*-import geventfrom gevent import monkeyimport urllibimport urllib.request as request """"1.为什么需要使用协程呢?从一个业务场景来说吧:比如我们写了一个程序对某个网站的数据进行抓取..
#!/usr/bin/evn python
# -*- coding:utf-8 -*-
import gevent
from gevent import monkey
import urllib
import urllib.request as request
""""
1.为什么需要使用协程呢?
从一个业务场景来说吧:比如我们写了一个程序对某个网站的数据进行
抓取数据,如果使用多线程的话,发送多个线程的时候,因为请求会有一段时间是
在等待的,这样一来就显得,资源有点浪费了(N个线程什么都不做就一直在待请求响应)。
如果能够通过一个线程来做的话(即:如果线程中开启了这个请求,但是还是可以去做其他的事(比如
再开一个请求),其实说白协程就是一个并行的操作。都发送请求过去,谁先回来就先处理谁)
"""
#这个代码是并行请求的关键
monkey.patch_all()
def sendNetWork(urls):
handler=request.ProxyHandler()
opener=request.build_opener(handler);
response=opener.open(fullurl=urls);
text=response.read()
print(urls+"-----test:"+str(text))
gevent.joinall([gevent.spawn(sendNetWork,"http://wwww.baidu.com"),
gevent.spawn(sendNetWork, "https://github.com")
,gevent.spawn(sendNetWork,"http://www.maiziedu.com")
,gevent.spawn(sendNetWork,"http://wwww.baidu.com")])
以上纯属个人见解,如有错误,希望各位大神不吝赐教!
更多推荐
所有评论(0)