python异步方法asyncio的使用1

asyncio模块提供了使用协程构建并发应用的工具。它使用一种单线程单进程的方式实现并发,应用的各个部分彼此合作,可以显示的切换任务,一般会在程序阻塞I/O操作的时候发生上下文切换如等待读写文件,或者请求网络。同时asyncio也支持调度代码在将来的某个特定事件运行,从而支持一个协程等待另一个协程完成,以处理系统信号和识别其他一些事件。

对于其他的并发模型大多数采用的都是线性的方式编写。并且依赖于语言运行时系统或操作系统底层的底层线程或进程来适当的改变上下文,而基于asyncio的应用要求应用代码显示的处理上下文切换。asyncio提供的框架以事件循环为中心,程序开启一个无限的循环,程序会把一些函数注册到事件循环当中,当满足事件发生的时候,调用相应的协程函数。

区别

# 普通函数
def defaule(x):
	print('参数x值为{}'.format(x))
# 异步函数
import asyncio
async def default1(x):
	print('参数x值为{}'.format(x))

由上述2段代码可以看出,异步方法default1()与普通方法default()没有 太大的区别,只是在前面增加了async关键字,async是asynchronous的简写,是为了标记该函数是异步函数, 异步函数只能被异步函数调用,如果被普通函数调用,则会报错,如下段代码:

import asyncio

async def async_demo(x):
    return x

def default():
    print('异步函数返回值为:{}'.format(async_demo(5)))

if __name__ == "__main__":
    default()

运行结果:

C:/Users/jiang.li2/PycharmProjects/untitled3/demo4.py:12: RuntimeWarning: coroutine 'async_demo' was never awaited
	rint(async_demo(5))
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

运行上述代码时,异步函数调用和普通函数调

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python异步编程是一种编写高效、阻塞的代码的方式,其中asyncioPython标准库中用于实现异步编程的模块。它提供了一组用于编写协程、任务和事件循环的API。 在异步编程中,可以使用async/await关键字定义协程函数,协程函数可以在遇到IO操作时主动让出CPU,而不会阻塞其他任务的执行。asyncio通过事件循环(event loop)来调度协程的执行,事件循环负责管理协程的调度和IO事件的处理。 以下是一些关键概念和组件: 1. 协程(coroutine):使用async/await关键字定义的可等待对象,可以在IO操作时暂停并让出CPU,以便其他任务执行。 2. 任务(task):表示协程的执行,可以通过asyncio.create_task()函数创建任务。 3. 事件循环(event loop):负责调度和执行协程,处理IO事件。 4. Future对象:表示异步操作的结果,可以通过asyncio.Future()创建。 5. 异步函数(async function):使用async关键字定义的函数,可以在其中使用await关键字等待其他协程或异步操作的完成。 6. 回调函数(callback):在异步操作完成时被调用函数使用asyncio进行异步编程的一般步骤如下: 1. 创建一个事件循环对象:loop = asyncio.get_event_loop() 2. 定义协程函数异步函数。 3. 创建任务:task = loop.create_task(协程函数异步函数()) 4. 运行事件循环:loop.run_until_complete(task) 5. 在需要的地方使用await关键字等待异步操作的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值