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 01 Python
python多线程之事件Event的使用详解
Apr 27 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
python如何使用Redis构建分布式锁
Jan 16 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 Python
Python接口开发实现步骤详解
Apr 26 Python
如何写python的配置文件
Jun 07 Python
PyQt5-QDateEdit的简单使用操作
Jul 12 Python
django下创建多个app并设置urls方法
Aug 02 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
Nov 24 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 20 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
网上应用的一个不错common.js脚本
2007/08/08 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
python的几种开发工具介绍
2007/03/07 Python
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
Python使用MD5加密字符串示例
2014/08/22 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
在Python中表示一个对象的方法
2019/06/25 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
小学三好学生事迹材料
2014/08/15 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
技术股东合作协议书
2014/12/02 职场文书
千与千寻观后感
2015/06/04 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
python爬虫之爬取笔趣阁小说
2021/04/22 Python
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技