python协程 无能为力_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已协程方式处理任务相关推荐
- python协程库_python中协程的详解(附示例)
本篇文章给大家带来的内容是关于python中协程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程,又称微线程,纤程.英文名Coroutine 协程看上去也是子程序 ...
- python限制进程数_Python连载36-线程数量限制、Timer、可重入锁
一.允许一个资源最多由几个线程同时进行 命令行:threading.Semaphore(个数) 代表现在最多有几个线程可以进行操作 importthreadingimporttime#参数定义了最多几 ...
- python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例
我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...
- python写的平行四边形_python 已知平行四边形三个点,求第四个点的案例
我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...
- python怎么输出字符串_python出输出字符串方式:
python出输出字符串方式: >>> who='knights' >>> what='NI' >>> print ('we are the',w ...
- python json解析方法_Python 中的 JSON 方式讲解
Python的dict对象可以直接序列化为JSON的{},不过,很多时候,我们更喜欢用class表示对象,比如定义Student类,然后序列化,代码如下:import json class Stude ...
- python清除列表内容_Python 列表的清空方式
情况列表的操作: del list[:] list=[] list[:]=[] def func(L): L.append(1) print L #L[:]=[] #del L[:] L = [] p ...
- python 打印列表元素_Python程序以不同方式打印列表元素
python 打印列表元素 In this program – we are going to learn how can we print all list elements, print spec ...
- python判断正数负数_python判断正负数方式
我就废话不多说了,大家还是直接看代码吧! a1 = raw_input("please input a number") a = int(a1) if(a!=0): if(a &g ...
最新文章
- C++中Reference与指针(Pointer)的使用对比
- 连接SQLite 创建ADO.net实体类
- 使用Hash直接登录Windows
- javaweb学习总结(二十四)——jsp传统标签开发
- Codeforces 833B 题解(DP+线段树)
- Windows Security——获取Windows已经保存的WiFi网络密码
- wps office oa控件 痕迹_WPS,Excel,哪个好用?其实真的好用的,是这个工具
- urllib库parse模块的使用
- 20155202《网络对抗》Exp9 web安全基础实践
- 【转】实用技巧:简单而有用的nohup命令介绍
- ZooKeeper集群部署方式
- centos java创建文件_CentOS java生成文件并赋予权限的问题
- SELinux系列(八)——SELinux默认安全上下文的查询和修改(semanage命令)
- MySQL(11)-----多表创建及描述表关系(多对多的分析和实现)
- 数字电子技术基础-2-逻辑函数的最小项与最大项
- i3 10100F和i3 10105F差距大不大
- 技术创新是协同OA产品的生命力
- 狐妖小红娘服务器维护,3月7游戏更新公告 狐妖小红娘版本上线
- c语言选择结构作用,c语言选择结构程序设计教案
- 大数据必学Java基础(二十六):数组的应用题
热门文章
- 基于PyTorch框架的多层全连接神经网络实现MNIST手写数字分类
- 将Sql数据库中的表导出到指定文件
- php怎么看回调的异步通知的数据_php app支付宝回调(异步通知)详解
- 深入理解计算机底层为什么采用补码运算【如何理解二进制计算高位溢出】
- spring-Bean依赖注入-》普通数据类型
- Spring Security——SessionManagement中InvalidSessionStrategy自定义——简单跳过Fitter过滤刷新Session
- C#——《C#语言程序设计》实验报告——数据库编程——基于ADO.NET技术的数据库操作DEMO
- Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(六)后端改造
- 《Java程序设计》实验报告——Java的接口与继承
- AJAX——与服务器交换数据并更新部分网页技术