python 协程+爬虫

2 篇文章 0 订阅
1 篇文章 0 订阅

协程:又叫微线程
    python的多线程没法利用多核,只能用一个核去切换,没办法实现真正的并行效果。多线程的意义,对于IO密集型是有意义的。大部分处理都是IO的,多线程是可以解决大多数情况的。但是解决不了并行的多进程。
    协程:非抢占式的程序,线程和进程都是抢占式的。协程也是要切换的,不过这种切换是我们来规定的,在于我们的需求。
    用户态的切换。

    协程主要解决的问题也是IO操作,比多线程效果好得多。计算密集型的,协程的效果也不是很好。

    优点:没有切换,没有锁一说,因为协程的本质就是一个线程

    缺点:不能用多核,还得靠多进程+协程模式才能解决并发问题

 

import requests,time,gevent
starttime=time.time()
def f(url):
    print('get the url:',url)
    res=requests.get(url)
    data=res.text
    print('%s bytes' % len(data))
    with open('new','w',encoding='utf8') as t:
        t.write(data)
# f('http://www.sina.cn')
# f('http://sina.com.cn')
# f('http://smzdm.com')
# f('https://blog.csdn.net/dengyuelin/article/details/54628774')
gevent.joinall([
gevent.spawn(f,'http://baidu.com'),
gevent.spawn(f,'http://sina.com.cn'),
gevent.spawn(f,'http://smzdm.com'),
gevent.spawn(f,'https://blog.csdn.net/dengyuelin/article/details/54628774')

])

print('cost time',time.time()-starttime)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值