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如何实现守护进程的方法示例
Feb 08 Python
Mac 上切换Python多版本
Jun 17 Python
基于Python的关键字监控及告警
Jul 06 Python
Python优先队列实现方法示例
Sep 21 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
Python 生成 -1~1 之间的随机数矩阵方法
Aug 04 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
python定间隔取点(np.linspace)的实现
Nov 27 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
python中remove函数的踩坑记录
Jan 04 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 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
批量修改RAR文件注释的php代码
2010/11/20 PHP
fgetcvs在linux的问题
2012/01/15 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
javascript显示选择目录对话框的代码
2008/11/10 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
浅谈jquery中delegate()与live()
2015/06/22 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
python修改注册表终止360进程实例
2014/10/13 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
中国央视网签名寄语
2014/01/18 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
倡导文明标语
2014/06/16 职场文书
家长学校教学计划
2015/01/19 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers