python已协程方式处理任务实现过程


Posted in Python onDecember 27, 2019

这篇文章主要介绍了python已协程方式处理任务实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

#从genent中导入monky模块①
from gevent import monkey
#把程序变成协程的方式运行②
monkey.patch_all()
import gevent,requests,time
#导入requests和time
start = time.time()
#记录程序开始时间
 
url_list = ['https://www.baidu.com/',
'https://www.sina.com.cn/',
'http://www.sohu.com/',
'https://www.qq.com/',
'https://www.163.com/',
'http://www.iqiyi.com/',
'https://www.tmall.com/',
'http://www.ifeng.com/']
#把8个网站封装成列表
 
def get_data(url):
  r = requests.get(url)
  # 用requests.get()函数爬取网站
  print(url, time.time()-start,r.status_code)
 
task_list=[]
# 创建一个空列表
for url in url_list:
  # 用gevent里面的spawn函数创建任务 get_data是方法名,url是参数③
  task=gevent.spawn(get_data,url)
  # 将创建的任务添加到task_list④
  task_list.append(task)
#执行任务列表中的所有任务⑤
gevent.joinall(task_list)
 
end = time.time()
#记录程序结束时间
print(end-start)
#end-start是结束时间减去开始时间,就是最终所花时间。

使用队列,代码如下:

#从genent中导入monky模块①
from gevent import monkey
#把程序变成协程的方式运行②
monkey.patch_all()
import gevent,requests,time
#从gevent库里导入queue模块
from gevent.queue import Queue
#导入requests和time
start = time.time()
#记录程序开始时间
 
url_list = ['https://www.baidu.com/',
'https://www.sina.com.cn/',
'http://www.sohu.com/',
'https://www.qq.com/',
'https://www.163.com/',
'http://www.iqiyi.com/',
'https://www.tmall.com/',
'http://www.ifeng.com/']
#把8个网站封装成列表
#创建队列对象,并赋值给work。
work=Queue()
for url in url_list:
  # 用put_nowait()函数可以把网址都放进队列里。
  work.put_nowait(url)
 
 
def get_data():
  # 当队列不是空的时候,就执行下面的程序。
  while not work.empty():
    # 用get_nowait()函数可以把队列里的网址都取出。
    url=work.get_nowait()
    r = requests.get(url)
    # 用requests.get()函数爬取网站 qsize队列长度
    print(url, work.qsize(),r.status_code)
 
task_list=[]
# 创建一个空列表
# 创建了2个爬虫
for x in range(2):
  # 用gevent里面的spawn函数创建任务 get_data是方法名
  task=gevent.spawn(get_data)
  # 将创建的任务添加到task_list④
  task_list.append(task)
#执行任务列表中的所有任务⑤
gevent.joinall(task_list)
 
end = time.time()
#记录程序结束时间
print(end-start)
#end-start是结束时间减去开始时间,就是最终所花时间。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
浅谈Python中列表生成式和生成器的区别
Aug 03 Python
Python和JavaScript间代码转换的4个工具
Feb 22 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
简单实现python画圆功能
Jan 25 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
Python爬虫之正则表达式的使用教程详解
Oct 25 Python
python爬取酷狗音乐排行榜
Feb 20 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
python中的yield from语法快速学习
Nov 06 Python
Python django框架 web端视频加密的实例详解
Nov 20 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 #Python
python操作gitlab API过程解析
Dec 27 #Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 #Python
python使用协程实现并发操作的方法详解
Dec 27 #Python
Python调用.NET库的方法步骤
Dec 27 #Python
IronPython连接MySQL的方法步骤
Dec 27 #Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 #Python
You might like
Home Coffee Roasting
2021/03/03 咖啡文化
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php实现插入排序
2015/03/29 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
python 实用工具状态机transitions
2020/11/21 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
大学生实习期自我评价范文
2013/10/03 职场文书
师范生自我鉴定范文
2013/10/05 职场文书
初婚初育证明
2014/01/14 职场文书
学生干部的自我评价分享
2014/01/18 职场文书
党员创先争优承诺书
2014/03/26 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
主题团日活动总结
2014/06/25 职场文书
保险公司演讲稿
2014/09/02 职场文书
认错检讨书
2014/10/02 职场文书
网站出售协议书范文
2014/10/10 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
Python OpenCV之常用滤波器使用详解
2022/04/07 Python