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之Import 模块
Oct 13 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
Python地图绘制实操详解
Mar 04 Python
Python微信操控itchat的方法
May 31 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
Python如何获取文件路径/目录
Sep 22 Python
Django中和时区相关的安全问题详解
Oct 12 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
js程序中美元符号$是什么
2008/06/05 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
python虚拟环境的安装配置图文教程
2017/10/20 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
django 修改server端口号的方法
2018/05/14 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
父亲八十大寿答谢词
2014/01/23 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
教师教学评估方案
2014/05/09 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
2014年客房部工作总结
2014/11/22 职场文书
运动会开幕词
2015/01/28 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python