最近需要采集一个目标网站的数据(MP3),该网站不限速,于是试过了多线程,多进程,都不尽人意,最后祭出大杀器:asyncio

需要安装库:

pip install asyncio -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install aiohttp -i https://pypi.tuna.tsinghua.edu.cn/simple

在这个过程中,假如你的并发达到2000个,程序会报错:ValueError: too many file descriptors in select()。报错的原因字面上看是 Python 调取的 select 对打开的文件有最大数量的限制,这个其实是操作系统的限制,linux打开文件的最大数默认是1024,windows默认是509,超过了这个值,程序就开始报错。个人推荐限制并发数的方法,设置并发数为100~500,处理速度更快。

#coding:utf-8

import asyncio,aiohttp

#目标网站

url = 'https://www.baidu.com/'

#采集程序

async def hello(url,semaphore):

async with semaphore:

async with aiohttp.ClientSession() as session:

async with session.get(url) as response:

return await response.read()

# 预处理函数

async def run():

semaphore = asyncio.Semaphore(500) # 限制并发量为500

to_get = [hello(url.format(),semaphore) for _ in range(1000)] #总共1000任务

await asyncio.wait(to_get)

if __name__ == '__main__':

loop = asyncio.get_event_loop()

loop.run_until_complete(run())

loop.close()

python异步编程 图书_Python学习之异步编程asyncio相关推荐

  1. python面向对象编程项目_Python学习之==面向对象编程(一)

    一.面向对象与面向过程 面向对象与面向过程是两种不同的编程范式,范式指的是按照什么方式去编程.去实现一个功能.不同的编程范式本质上代表对各种不同类型的任务采取不同的解决问题的思路. 1.面向过程编程 ...

  2. python元编程运用_Python 中的元编程

    就像元数据是有关数据的数据一样,元编程就是编写用于操纵程序的某些程序.人们普遍认为,元程序就是生成其他程序的某些程序,但范式更加广泛.所有旨在自我读取.分析.转换或修改的程序都是元编程的范例.例如: ...

  3. python常用开放工具_python学习笔记16-各种模块和开放工具收集整理

    一.调试,性能,日志 Debugger: pdb Logger: logging Profilers: profile, hotshot, cProfile 调试模块 pdb 允许你设置(条件)断点, ...

  4. python从入门到_Python学习路线从入门到上手,如何快速Python学习?

    因为清晰易读的风格,广泛的适用性,Python已经成为最受欢迎的编程语言之一.在TIOBE 排行榜中位居第四,是名副其实的人工智能第一语言. 风靡的另一个原因是,Python有非常多的第三方库.比如用 ...

  5. python编程示例_Python套接字编程–服务器,客户端示例

    python编程示例 Good Day Learners! In our previous tutorial, we discussed about Python unittest module. T ...

  6. python的ppt报告_Python学习报告.ppt

    <Python学习报告.ppt>由会员分享,可在线阅读,更多相关<Python学习报告.ppt(12页珍藏版)>请在人人文库网上搜索. 1.Python学习报告,报告人: 时间 ...

  7. python 栈实现 加减乘除_Python自学笔记,编程中简单的加减乘除

    日常生活中,我们都会有过很多的加减乘数的基本运算.今天我们来看看Python这么编程语言,是怎么进行简单的基本运算的.废话不多说,我们开始吧开发工具:IDLE (Python 3.7 64-bit)这 ...

  8. python资源管理器安装_Python学习笔记-Python安装

    Python安装 文章简介:本文介绍在不同操作系统中搭建Python编程环境. 一 搭建编程环境 在不同的操作系统中,Python存在细微的区别,下面介绍两个主要的Python版本. 1.1 Pyth ...

  9. python 异步加载_Python学习笔记4——爬取异步加载数据

    一.什么是异步加载? 在之前的学习笔记中,爬取的网页是需要手动翻页的网址,但是一些网站是通过自动加载翻页的,如knewone网页.浏览knewone的官网就能发现,当下拉到网页最下端时,网站会自动加载 ...

  10. python异步io 队列_python 学习笔记九 队列,异步IO

    queue (队列) 队列是为线程安全使用的. 1.先入先出 import queue #测试定义类传入队列class Foo(object): def __init__(self,n): self. ...

最新文章

  1. oracle sequence用法
  2. 不要说自己没什么兴趣,也不要说自己兴趣很广泛,最好能具体到哪个方面,顺便提一下你最近看的一本该方面的书,有什么收获(转)...
  3. Android 系统文件夹功能(转)
  4. 基于事件驱动架构构建微服务第3部分:Presenters, Views和Controllers
  5. Spark入门(八)之WordCount
  6. 语言差异引起的问题解决一例
  7. php将汉字转换为gb2312编码,php实现utf-8和GB2312编码相互转换
  8. x86汇编之任务切换
  9. 两个多变量分布间的KL散度+变分子编码
  10. 使用socket模块写一个飞秋炸弹
  11. mac中不允许安装第三方软件
  12. 2022年高压电工模拟考试及高压电工复审模拟考试
  13. Chrome 各版本下载地址大全
  14. 【Visual C++】游戏开发四十九 浅墨DirectX教程十七 三维天空的实现
  15. 机器人风马_泰迦奥特曼介绍了三个超兽,其中一个克制风马奥特曼
  16. c++调用静态函数的方法
  17. c语言中shift f12组合建,C++学习1-(C语言基础、VS快捷键)
  18. 联想电脑G40无法使用 非要睡眠后才能启用wifi
  19. org.apache.thrift.transport.TTransportException: GSS initiate failed
  20. 惩罚因子(penalty term)与损失函数(loss function)

热门文章

  1. 服务器主板s2600cp2配置Raid5全过程
  2. 宝可梦火红存档修改器
  3. 多类别车辆跟踪-模型训练、评估、预测、优化到部署的全流程方案_副本
  4. idea格式化代码快捷键
  5. 飞思卡尔mc9s08烧录方法_编程器USBDM 读写MC9S08 MCF51 批量烧录刷写NXP飞思卡尔单片机...
  6. stm32f103rbt6基本介绍
  7. 机器学习十大算法都是何方神圣?看完你就懂了
  8. java 偏向锁的作用_java--偏向锁
  9. UDP 协议报文格式
  10. GPX格式地图轨迹生成python