• 最近一段好忙, 忙的都没时间去管理网站,网站被举报 被攻击 我也是醉了 :sad:

  • 好久没发说说了,感觉与世隔绝了 :lol:

  • 今天更换Git主题,以后本站由Git主题强力驱动 :mrgreen: :mrgreen:
  • 六一儿童节快乐

  • 今天全站启用又拍云 CDN进行加速

  • 这两天有些忙所以没来得及更新,愿一切安好
  • 锲而不舍是取得成功关键的一环
  • 当你无助时,你可以哭,但哭过你必须要振作起来,绝地逢生并不罕见,何况不是绝境! 早安!

  • 今天五一,没有出去玩,主要是人太多了

  • 今天外面风好大,天气也有点冷,出门一定要多穿衣服!

协程

爬虫精进 慕白 3个月前 (05-17) 501次浏览 已收录 0个评论

协程

01 – 概念

协程是一种用户态的轻量级线程,即协程是由用户程序自己控
制调度的。
异步:
在一个任务未完成时,可以执行其他多个任务,彼此不受影响。
同步:
一个任务结束才能启动下一个。

02 – 多协程

一种非抢占式的异步技术被创造了出来,这种方式叫多协程。

1 gevent库的使用方法

导入模块:

from gevent import monkey
#从gevent库里导入monkey模块。
monkey.patch_all()
#monkey.patch_all()能把程序变成协作式运行,即可以
帮助程序实现异步。
import gevent,time,requests
#导入gevent、time、requests。

协程代码示例:

start = time.time()
#记录程序开始时间。
url_list = [‘https://www.baidu.com/’,
https://www.sina.com.cn/’,’http://www.sohu.com/’,
https://www.qq.com/’,’http://www.aimubai.com.cn/’,
http://www.iqiyi.com/’,’http://www.d1r.cn/’,
https://www.aimubai.cn/’%5D#把8个网站封装成列表。
def crawler(url):
#定义一个crawler()函数。
r = requests.get(url)
#用requests.get()函数爬取网站。
print(url,time.time()-start,r.status_code)
#打印网址、请求运行时间、状态码。
tasks_list = []
#创建空的任务列表。
for url in url_list:
#遍历url_list。
task = gevent.spawn(crawler,url)
#用gevent.spawn()函数创建任务。
tasks_list.append(task)
#往任务列表添加任务。
gevent.joinall(tasks_list)
#执行任务列表里的所有任务,就是让爬虫开始爬取网站。
end = time.time()
#记录程序结束时间。
print(end-start)
#打印程序最终所需时间。


清宁时光 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:协程
喜欢 (0)
[6447834@qq.com]
分享 (0)
慕白
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址