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 多线程应用介绍
Dec 19 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
Scrapy的简单使用教程
Oct 24 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
Python操作qml对象过程详解
Sep 26 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
基于python调用psutil模块过程解析
Dec 20 Python
python 伯努利分布详解
Feb 25 Python
Python lambda表达式原理及用法解析
Aug 18 Python
python实现监听键盘
Apr 26 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
PHP实用函数分享之去除多余的0
2015/02/06 PHP
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
pygame播放音乐的方法
2015/05/19 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
Python读取properties配置文件操作示例
2018/03/29 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
Django logging配置及使用详解
2019/07/23 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
python框架flask表单实现详解
2019/11/04 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
.net软件工程师应聘上机试题
2015/03/10 面试题
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
总结表彰大会主持词
2014/03/26 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
汽车车尾标语大全
2015/08/11 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers
python语言中pandas字符串分割str.split()函数
2022/08/05 Python