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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
Python实现计算两个时间之间相差天数的方法
May 10 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
Sanic框架请求与响应实例分析
Jul 16 Python
利用python如何在前程无忧高效投递简历
May 07 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
python解析多层json操作示例
Dec 30 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
python中元组的用法整理
Jun 15 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
详解python算法之冒泡排序
2019/03/05 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
django 多数据库及分库实现方式
2020/04/01 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
《月迹》教学反思
2014/02/19 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
元旦活动感言
2014/03/08 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书