Python实现高并发协程处理

协程是程序执行的一种方式,更轻量级于线程。在Python中,通过async和await关键字实现异步操作,允许在一个线程中并发运行多个协程,提高程序的并发性能,尤其在I/O密集型任务中表现优秀。asyncio库负责协程的调度,当遇到await时,任务可以切换而不阻塞,实现高效的并发下载等操作。
摘要由CSDN通过智能技术生成

什么是协程?

进程:程序在启动后,会在操作系统中作为一个进程存在。不同的进程之间互不影响,各自运行任务。

线程:每个进程为了保证多任务运行,会拆分为多个线程,线程共享进程的运行空间;但线程之间要进行切换时,开销比较高,需要保存线程的运行信息以便下次恢复,此时不可避免会影响效率。

协程:协程是线程的进一步划分,一个线程中运行多个协程;在线程不进行切换的前提下,使用协程就可以完成并发运算的操作。相对于线程切换实现的并发,协程更加轻量,且效率更高。

Python协程

python中,协程依靠async 和 await 两个关键字实现。

async 关键词放置在普通函数前,将函数设置为异步执行,交给 asyncio 去调度。

asyncio 在异步调度时,如果发现wait关键词,异步函数就不需要阻塞在这里,可以调度到其它Task中执行。

例如,在python中实现url并发下载:

async def download_url(url, session=None) :
    fail = True
    file_name = basename(uri)
    assert session
    try:
        async with session.get(uri) as response:
            if response.status == 404:
                print('404 - Not found'))
                return fail, url
            if not response.status == 200:
				print('Failed')
                return fail, url
            data = await response.read()

此时,可以同时启动 get(url),在 await 的时候,切换 task。

协程使用起来会更加高效,除了Python,在其它编程语言中也有体现,可以提高程序性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桥路丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值