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 相关文章推荐
Python中operator模块的操作符使用示例总结
Jun 28 Python
TensorFlow实现卷积神经网络
May 24 Python
Python使用pickle模块实现序列化功能示例
Jul 13 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
详解python中的异常捕获
Dec 15 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
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
Views rows style模板重写代码
2011/05/16 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
python+flask实现API的方法
2018/11/21 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
python生成器用法实例详解
2019/11/22 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
Linux常见面试题
2013/03/18 面试题
大学生村官工作感言
2014/01/10 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
安全生产协议书
2016/03/22 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP