![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
异步
一起学python吧
每天学习一点点
展开
-
aiomysql、asyncpg、aioredis
Python 目前已经进化到了 3.11 版本,对操作数据库也提供了相应的异步支持。当我们做一个 Web 服务时,性能的瓶颈绝大部分都在数据库上,如果一个请求从数据库中读数据的时候能够自动切换、去处理其它请求的话,是不是就能提高并发量了呢。下面我们来看看如何使用 Python 异步操作 MySQL、PostgreSQL 以及 Redis,以上几个可以说是最常用的数据库了。至于 SQLServer、Oracle,本人没有找到相应的异步驱动,有兴趣可以自己去探索一下。而操作数据库无非就是增删改查,下面我们来看看原创 2023-07-10 09:44:55 · 781 阅读 · 0 评论 -
asyncio异步编程之异步mysql
import asyncioimport aiomysqlasync def async_ope_mysql(): sql_conn = await aiomysql.connect(host="", user="xx", password="!xx", db="xx", port=3306) cur = await sql_conn.cursor() sql = "select Host, User from user;" awa.原创 2022-03-09 18:30:01 · 786 阅读 · 0 评论 -
asyncio异步编程之异步操作redis
import asyncioimport aioredisasync def operate(): conn = await aioredis.StrictRedis(host="", port=xx, password="xx") test = await conn.get("test") print(test) await conn.set("name", "li") name = await conn.get("name") print(na.原创 2022-03-09 18:12:56 · 1214 阅读 · 0 评论 -
asyncio异步编程之uvloop
import asyncioimport uvloop# 设置之后,asyncio自身的时间循环就被替代了,因为uvloop的效率比自身带的loop循环效率高asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())# 下面所有代码都不变还跟原来一样的...原创 2022-03-09 17:56:18 · 446 阅读 · 0 评论 -
asyncio异步编程与非异步编程代码交叉使用
在日常开发中,很有可能在一个一直使用异步编程的工程代码中会不得已使用非异步编程的代码,那么这个时候怎么办呢,有什么办法转化吗?下面直接看代码import asyncioimport concurrent.futuresimport timedef func(): time.sleep(3) print("test....") return "this is result"async def main(): # 获取已经执行的事件循环 get_runni原创 2022-03-09 17:33:56 · 251 阅读 · 0 评论 -
asyncio异步编程之Future对象
Task继承Future,Task内部执行await结果的处理就是基于Future的,Future内部维护了状态,一般情况我们是不会手动书写future的原创 2022-03-09 17:05:56 · 111 阅读 · 0 评论 -
asyncio异步编程之Task对象
1, Task对象的作用可以将多个任务添加到事件循环当中,达到多任务并发的效果2.如何创建task对象asyncio.create_task(协程对象)注意:create_task只有在python3.7及以后的版本中才可以使用,就像asyncio.run()一样,在3.7以前可以使用asyncio.ensure_future()方式创建task对象3.示例一(目前不推荐这种写法)async def func(): print(1) await asyncio原创 2022-03-09 16:57:21 · 2881 阅读 · 7 评论 -
asyncio异步编程之await关键字
await后面跟 可等待的对象: 协程对象,future对象,task对象原创 2022-03-09 15:54:21 · 107 阅读 · 0 评论 -
协程函数快速上手
1,什么叫协程函数:定义函数时以 async def 函数名方式定义的函数可以称之为协程函数2,什么叫协程对象执行协程函数得到的对象可以称之为协程对象3,举例async def func(): passf = func()func() 为协程函数f 为协程对象4,注意,执行协程函数,得到协程对象,协程函数代码是不会执行的,如果想执行协程函数内部代码,要将协程对象交给时间循环来处理import asyncioasync def func(...原创 2022-03-09 15:40:42 · 577 阅读 · 0 评论 -
协程的几种书写方式
1.使用greenletpip install greenletfrom greenlet import greenletdef func1(): print(11) g2.switch() print(33) g2.switch()def func2(): print(22) g1.switch() print(44)g1 = greenlet(func1)g2 = greenlet(func2)g1.switch()原创 2022-03-09 15:31:18 · 319 阅读 · 0 评论 -
异步协程方式下载图片
import asyncioimport aiohttpasync def request_url(sessison, url): print("正在下载:%s" % url) async with sessison.get(url, verify_ssl=False) as response: content = await response.content.read() file_name = url.split("/")[-1] .原创 2022-03-09 15:11:57 · 759 阅读 · 0 评论