#从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已协程方式处理任务相关推荐

  1. python协程库_python中协程的详解(附示例)

    本篇文章给大家带来的内容是关于python中协程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程,又称微线程,纤程.英文名Coroutine 协程看上去也是子程序 ...

  2. python限制进程数_Python连载36-线程数量限制、Timer、可重入锁

    一.允许一个资源最多由几个线程同时进行 命令行:threading.Semaphore(个数) 代表现在最多有几个线程可以进行操作 importthreadingimporttime#参数定义了最多几 ...

  3. python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...

  4. python写的平行四边形_python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...

  5. python怎么输出字符串_python出输出字符串方式:

    python出输出字符串方式: >>> who='knights' >>> what='NI' >>> print ('we are the',w ...

  6. python json解析方法_Python 中的 JSON 方式讲解

    Python的dict对象可以直接序列化为JSON的{},不过,很多时候,我们更喜欢用class表示对象,比如定义Student类,然后序列化,代码如下:import json class Stude ...

  7. python清除列表内容_Python 列表的清空方式

    情况列表的操作: del list[:] list=[] list[:]=[] def func(L): L.append(1) print L #L[:]=[] #del L[:] L = [] p ...

  8. python 打印列表元素_Python程序以不同方式打印列表元素

    python 打印列表元素 In this program – we are going to learn how can we print all list elements, print spec ...

  9. python判断正数负数_python判断正负数方式

    我就废话不多说了,大家还是直接看代码吧! a1 = raw_input("please input a number") a = int(a1) if(a!=0): if(a &g ...

最新文章

  1. C++中Reference与指针(Pointer)的使用对比
  2. 连接SQLite 创建ADO.net实体类
  3. 使用Hash直接登录Windows
  4. javaweb学习总结(二十四)——jsp传统标签开发
  5. Codeforces 833B 题解(DP+线段树)
  6. Windows Security——获取Windows已经保存的WiFi网络密码
  7. wps office oa控件 痕迹_WPS,Excel,哪个好用?其实真的好用的,是这个工具
  8. urllib库parse模块的使用
  9. 20155202《网络对抗》Exp9 web安全基础实践
  10. 【转】实用技巧:简单而有用的nohup命令介绍
  11. ZooKeeper集群部署方式
  12. centos java创建文件_CentOS java生成文件并赋予权限的问题
  13. SELinux系列(八)——SELinux默认安全上下文的查询和修改(semanage命令)
  14. MySQL(11)-----多表创建及描述表关系(多对多的分析和实现)
  15. 数字电子技术基础-2-逻辑函数的最小项与最大项
  16. i3 10100F和i3 10105F差距大不大
  17. 技术创新是协同OA产品的生命力
  18. 狐妖小红娘服务器维护,3月7游戏更新公告 狐妖小红娘版本上线
  19. c语言选择结构作用,c语言选择结构程序设计教案
  20. 大数据必学Java基础(二十六):数组的应用题

热门文章

  1. 基于PyTorch框架的多层全连接神经网络实现MNIST手写数字分类
  2. 将Sql数据库中的表导出到指定文件
  3. php怎么看回调的异步通知的数据_php app支付宝回调(异步通知)详解
  4. 深入理解计算机底层为什么采用补码运算【如何理解二进制计算高位溢出】
  5. spring-Bean依赖注入-》普通数据类型
  6. Spring Security——SessionManagement中InvalidSessionStrategy自定义——简单跳过Fitter过滤刷新Session
  7. C#——《C#语言程序设计》实验报告——数据库编程——基于ADO.NET技术的数据库操作DEMO
  8. Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(六)后端改造
  9. 《Java程序设计》实验报告——Java的接口与继承
  10. AJAX——与服务器交换数据并更新部分网页技术