首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏python前行者

    用aiohttp和uvloop实现一个高性能爬虫

    加速 uvloop基于libuv,libuv是一个使用C语言实现的高性能异步I/O库,uvloop用来代替asyncio默认事件循环,可以进一步加快异步I/O操作的速度。 uvloop的使用非常简单,只要在获取事件循环前,调用如下方法,将asyncio的事件循环策略设置为uvloop的事件循环策略。 asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) 使用上面的代码,我们可以快速将大约1500张的图片爬取下来。 ? 爬取下来的Google Earth图片 性能对比 为了验证aiohttp和uvloop的性能,笔者使用requests+concurrent库实现了一个多进程版的爬虫,分别爬取20个id,消耗的时间如图 可以看到,耗时相差了大概7倍,aiohttp+uvloop的组合在爬虫这种I/O密集型的场景下,可以说具有压倒性优势。相信在不远的将来,基于asyncio的库会将无数爬虫工程师从加班中拯救出来。

    1.1K30发布于 2019-03-25
  • 来自专栏Python私房菜

    实战 | 用aiohttp和uvloop实现一个高性能爬虫

    加速 uvloop基于libuv,libuv是一个使用C语言实现的高性能异步I/O库,uvloop用来代替asyncio默认事件循环,可以进一步加快异步I/O操作的速度。 uvloop的使用非常简单,只要在获取事件循环前,调用如下方法,将asyncio的事件循环策略设置为uvloop的事件循环策略。 1asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) 使用上面的代码,我们可以快速将大约1500张的图片爬取下来。 ? 性能对比 为了验证aiohttp和uvloop的性能,笔者使用requests+concurrent库实现了一个多进程版的爬虫,分别爬取20个id,消耗的时间如图。 ? 可以看到,耗时相差了大概7倍,aiohttp+uvloop的组合在爬虫这种I/O密集型的场景下,可以说具有压倒性优势。相信在不远的将来,基于asyncio的库会将无数爬虫工程师从加班中拯救出来。

    1.6K30发布于 2018-10-16
  • 来自专栏程序员的知识天地

    大规模异步新闻爬虫【6】:用asyncio实现异步爬虫

    asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) import sanicdb from urlpool import UrlPool 爬虫知识点 1. uvloop模块 uvloop这个模块是用Cython编写建立在libuv库之上,它是asyncio内置事件循环的替代,使用它仅仅是多两行代码而已: import uvloop asyncio.set_event_loop_policy (uvloop.EventLoopPolicy()) uvloop使得asyncio很快,比odejs、gevent和其它Python异步框架的快至少2倍,接近于Go语言的性能。 uvloop作者的性能测试 这是uvloop作者的性能对比测试。 ,就要把uvloop那两行注释掉哦。

    1.6K30发布于 2019-05-15
  • 来自专栏PHP开发者那些事

    cenots7安装uvicorn时报错

    pip3 install uvicorn报错: uvloop/loop.c:20:20: 致命错误:Python.h:没有那个文件或目录 #include "Python.h" ---- Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-qiwhtevf/uvloop --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-qiwhtevf/uvloop

    1.3K50发布于 2020-06-23
  • 来自专栏腾讯云原生团队

    在 TKE 上部署 AI 大模型(以 DeepSeek-R1 为例)

    File "uvloop/loop.pyx", line 1379, in uvloop.loop.Loop.run_forever File "uvloop/loop.pyx", line _run File "uvloop/handles/poll.pyx", line 216, in uvloop.loop. _run File "uvloop/cbhandles.pyx", line 66, in uvloop.loop.Handle. _run File "uvloop/loop.pyx", line 399, in uvloop.loop.Loop. _read_from_self File "uvloop/loop.pyx", line 404, in uvloop.loop.Loop.

    1.3K10编辑于 2025-02-18
  • 来自专栏程序员

    Python协程

    uvloop Python标准库中提供了asyncio模块,用于支持基于协程的异步编程。 uvloop是 asyncio 中的事件循环的替代方案,替换后可以使得asyncio性能提高。 事实上,uvloop要比gevent等其他python异步框架至少要快2倍,性能可以比肩Go语言。 安装uvloop pip3 install uvloop import asyncio import uvloop # 导入uvloop async def func1(): print asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) task_list = [func1(), func2()] t1 = asyncio.wait (task_list) asyncio.run(t1) 一个闪电般快速的ASGI服务器Uvicor就是基于uvloop和httptools构建的。

    1.1K10编辑于 2022-05-05
  • 来自专栏HHTjim'S 部落格

    aiohttp + asyncio 异步网络请求基本操作

    使用uvloop优化异步操作 uvloop用于提升协程的速度。 uvloop使用很简单,直接设置异步策略就好了。 import asyncio import uvloop #声明使用 uvloop 事件循环 asyncio.set_event_loop_policy(uvloop.EventLoopPolicy(

    1.2K30编辑于 2022-09-26
  • 来自专栏Python七号

    闪电侠 Uvicorn

    答:Uvicorn 是基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器。 什么是 uvloop 和 httptools ? 答:uvloop 用于替换标准库 asyncio 中的事件循环,使用 Cython 实现,它非常快,可以使 asyncio 的速度提高 2-4 倍。asyncio 不用我介绍吧,写异步代码离不开它。 --loop [auto|asyncio|uvloop|iocp] Event loop implementation. gunicorn example:app -w 4 -k uvicorn.workers.UvicornWorker 执行上述命令将开户 4 个工作进程,其中 UvicornWorker 的实现使用 uvloop

    2K20发布于 2020-11-25
  • 来自专栏北京马哥教育

    最快的 Python Web 框架入门

    来源:Python开发 ID:PythonPush 速度比较 框架 实现基础 每秒请求数 平均时间 Sanic Python 3.5 + uvloop 30,601 3.23ms Wheezy gunicorn Bottle gunicorn + meinheld 13,596 7.36ms Flask gunicorn + meinheld 4,988 20.08ms Kyoukai Python 3.5 + uvloop 3,889 27.44ms Aiohttp Python 3.5 + uvloop 2,979 33.42ms 安装 环境:python3.5+ python -m pip install sanic

    1.4K50发布于 2018-06-20
  • 优化 Python 爬虫性能:异步爬取新浪财经大数据

    技术方案 适用场景 优势 aiohttp HTTP请求 异步HTTP客户端,支持高并发 asyncio 事件循环 Python原生异步I/O框架 aiofiles 异步文件存储 避免文件写入阻塞主线程 uvloop "主协程:并发爬取多个股票""" stock_codes = ["sh600000", "sh601318", "sz000001"] # 示例股票代码(可扩展) # 使用uvloop 加速(仅限Unix系统) try: import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy

    1K10编辑于 2025-06-19
  • 来自专栏码客

    Python语法-多进程、多线程、协程(异步IO)

    我构建了如下测试场景: 请求10此,并sleep 1s模拟业务查询 方法 1;顺序串行执行 方法 2:多进程 方法 3:多线程 方法 4:asyncio 方法 5:asyncio+uvloop 最后的 asyncio+uvloop和官方asyncio 最大不同是用 Cython+libuv 重新实现了asyncio 的事件循环(event loop)部分, 官方测试性能是 node.js的 2 倍,持平 注意 Windows上不支持uvloop。 示例 import asyncio import uvloop import time async def query(num): print(num) await asyncio.sleep 1.01s 可以看出: 无论多进程、多线程还是asyncio都能大幅提升IO 密集型场景下的并发,但asyncio+uvloop性能最高!

    5.1K42发布于 2021-11-29
  • 来自专栏程序员IT圈

    最快的 Python Web 框架入门

    速度比较 框架 实现基础 每秒请求数 平均时间 Sanic Python 3.5 + uvloop 30,601 3.23ms Wheezy gunicorn + meinheld 20,244 4.94ms Bottle gunicorn + meinheld 13,596 7.36ms Flask gunicorn + meinheld 4,988 20.08ms Kyoukai Python 3.5 + uvloop 3,889 27.44ms Aiohttp Python 3.5 + uvloop 2,979 33.42ms 安装 环境:python3.5+ python -m pip install sanic

    67340发布于 2018-07-27
  • 来自专栏python3

    基于python3.5+的web框架s

    速度比较 框架 实现基础 每秒请求数 平均时间 Sanic Python 3.5 + uvloop 30,601 3.23ms Wheezy gunicorn + meinheld 20,244 4.94ms Bottle gunicorn + meinheld 13,596 7.36ms Flask gunicorn + meinheld 4,988 20.08ms Kyoukai Python 3.5 + uvloop 3,889 27.44ms Aiohttp Python 3.5 + uvloop 2,979 33.42ms 安装 环境:python3.5+ python -m pip install sanic

    55110发布于 2020-01-02
  • 来自专栏python知识

    异步(async)

    AsyncContextManager() as f: result = await f.do_smoething() print(result)asyncio.run(run()) 2.7 uvloop (第三方asynio的事件替代方案) 也是个事件循环,效率比原来的高 安装: pip install uvloop ##但是这个uvloop只支持Linux,不支持WIN import uvloopasyncio.set_event_loop_policy (uvloop.EventLoopPolicy()) 在文件设置以上代码,就可以把asyncio中的loop代替成uvloop 2.8 异步 redis 安装: pip install aioredis

    1.6K20发布于 2021-05-17
  • 来自专栏全栈程序员必看

    python进阶(17)协程「建议收藏」

    uvloop uvloop是 asyncio 中的事件循环的替代方案,替换后可以使得asyncio性能提高。 事实上,uvloop要比nodejs、gevent等其他python异步框架至少要快2倍,性能可以比肩Go语言。 安装uvloop pip3 install uvloop 在项目中想要使用uvloop替换asyncio的事件循环也非常简单,只要在代码中这么做就行。 import asyncio import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) # 编写asyncio的代码 # 内部的事件循环自动化会变为uvloop asyncio.run(...) 注意:知名的asgi uvicorn内部就是使用的uvloop的事件循环。

    1.4K20编辑于 2022-09-19
  • 来自专栏人工智能LeadAI

    Python 开发者 2017 应该关注的 7 个类库

    5、Sanic + uvloop Sanic 是一个与 Flask 类似,基于 uvloop 的 web 框架,它能让 Python 更快速。 uvloop 服务作为一个极其快速的库,顺其自然地替代了异步默认事件的循环。 Sanik 使得开发者能够在 Python 中编写异步应用,在这种方式下非常类似于 Node.js。 但是通过 Sanic 作者的基准测试,uvloop 在处理超过每秒33k次请求时,依然表现良好,这超过了 Node.js 的性能。由于 Sanic 还很新,因此在不久的将来会有更多的改进和变更。

    2K10发布于 2018-07-26
  • 来自专栏北京马哥教育

    2017年Python 开发者应该关注的 7 个类库

    点击这里学习如何在 Peewee 中创建一个数据库 #5 Sanic + uvloop Sanic 是一个与 Flask 类似,基于 uvloop 的 web 框架,它能让 Python 更快速。 uvloop 服务作为一个极其快速的库,顺其自然地替代了异步默认事件的循环。 Sanik 使得开发者能够在 Python 中编写异步应用,在这种方式下非常类似于 Node.js。 但是通过 Sanic 作者的基准测试,uvloop 在处理超过每秒33k次请求时,依然表现良好,这超过了 Node.js 的性能。由于 Sanic 还很新,因此在不久的将来会有更多的改进和变更。

    2.1K90发布于 2018-05-03
  • 来自专栏程序员的知识天地

    python基础教程:异步IO 之 概念和历史

    uvloop uvloop是用Cython写的,基于libuv这个C语言实现的高性能异步I/O库。 asyncio自己的事件循环是用Python写的,用uvloop替换asyncio自己的事件循环可以是asyncio的速度更快。并且使用相当简洁: ?

    90230发布于 2019-05-15
  • 【Python系列】FastAPI 与 Uvicorn:快速启动你的异步 Web 应用

    Uvicorn 简介 Uvicorn 是一个异步 Web 服务器网关接口(ASGI)服务器,使用uvloop作为其事件循环,并且使用httptools作为其 HTTP 解析器。 高性能:利用uvloop和httptools,Uvicorn 提供了出色的性能。 异步支持:Uvicorn 完全支持异步应用,可以与 FastAPI 无缝配合。

    4K10编辑于 2024-11-26
  • 来自专栏自动化、性能测试

    FastAPI(3)- uvicorn.run()

    Uvicorn 基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器 它不是一个 Web 框架,而是一个服务器 例如,它不是一个提供路径路由的框架,这是 FastAPI 框架提供的东西

    2.8K20发布于 2021-09-23
领券