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 相关文章推荐
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
python使用sqlite3时游标使用方法
Mar 13 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
Python实现一个带权无回置随机抽选函数的方法
Jul 24 Python
python elasticsearch环境搭建详解
Sep 02 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
python批量处理txt文件的实例代码
Jan 13 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
Selenium及python实现滚动操作多种方法
Jul 21 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
我的论坛源代码(九)
2006/10/09 PHP
PHP详细彻底学习Smarty
2008/03/27 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
python3.7.0的安装步骤
2018/08/27 Python
python实现二维插值的三维显示
2018/12/17 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
前处理班长职位说明书
2014/03/01 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏
SQL Server 中的事务介绍
2022/05/20 SQL Server
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript