python已协程方式处理任务实现过程
作者:长不大的菜鸟 时间:2022-05-10 03:12:56
这篇文章主要介绍了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是结束时间减去开始时间,就是最终所花时间。
来源:https://www.cnblogs.com/houdj/p/12100159.html
标签:python,协程,处理,任务
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
numpy中loadtxt 的用法详解
2022-03-21 09:46:39
Python实现把json格式转换成文本或sql文件
2022-06-03 14:52:23
Flask路由尾部有没有斜杠有什么区别
2021-03-17 12:00:58
![](https://img.aspxhome.com/file/2023/9/118349_0s.png)
13个超酷的js显示时间效果
2007-08-30 09:52:00
![](https://img.aspxhome.com/file/UploadPic/20078/30/2007830103514730s.jpg)
python用类实现文章敏感词的过滤方法示例
2022-04-10 19:30:25
![](https://img.aspxhome.com/file/2023/9/95309_0s.png)
960px下的黄金分割
2009-07-31 14:33:00
![](https://img.aspxhome.com/file/UploadPic/20097/31/498022_1248973274hhmt-19s.jpg)
通过python扫描二维码/条形码并打印数据
2022-03-12 11:32:32
python3利用ctypes传入一个字符串类型的列表方法
2021-06-10 20:33:36
了解WEB页面工具语言XML(四)应用分类
2008-09-05 17:18:00
对IPython交互模式下的退出方法详解
2021-08-04 10:03:11
用玩票的心态瞎猜豆瓣的思路
2008-08-18 21:14:00
Python中的Decorator装饰器的使用示例
2023-07-02 10:37:44
FCKeditor编辑器实战技巧
2007-10-08 21:13:00
![](https://img.aspxhome.com/file/UploadPic/200710/8/2007108211717673s.gif)
Pytorch十九种损失函数的使用详解
2021-07-19 22:23:07
![](https://img.aspxhome.com/file/2023/0/95130_0s.png)
使用Python的Scrapy框架十分钟爬取美女图
2023-06-16 03:28:57
![](https://img.aspxhome.com/file/2023/4/69564_0s.jpg)
Python UnicodedecodeError编码问题解决方法汇总
2023-10-07 09:28:20
![](https://img.aspxhome.com/file/2023/2/67392_0s.png)
基于Python实现简易学生信息管理系统
2021-04-07 23:19:49
![](https://img.aspxhome.com/file/2023/4/82774_0s.jpg)
Python子类继承父类构造函数详解
2023-02-27 09:13:03
如何利用SysOjects来获知数据库的信息?
2010-01-01 15:43:00
整理几个js日历源代码
2008-01-03 13:13:00
![](https://img.aspxhome.com/file/UploadPic/up/2008010313534152.gif)