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类属性的访问、设置和删除方法
Jul 25 Python
独特的python循环语句
Nov 20 Python
django 多数据库配置教程
May 30 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
python实现电脑自动关机
Jun 20 Python
带你认识Django
Jan 15 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
Sep 07 Python
python 利用pyttsx3文字转语音过程详解
Sep 25 Python
python正则表达式实例代码
Mar 03 Python
Python Selenium自动化获取页面信息的方法
Aug 31 Python
Python实现仓库管理系统
May 30 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
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
python字符串中的单双引
2017/02/16 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
python里运用私有属性和方法总结
2019/07/08 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
python上selenium的弹框操作实现
2020/07/13 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
汇科协同Java笔试题
2012/03/31 面试题
30年同学聚会邀请函
2014/01/25 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android
Redis主从复制操作和配置详情
2022/09/23 Redis