异步编程是指在程序执行时,不必等待耗时操作的完成,而是通过异步执行来进行。在Python中,使用asyncio库来进行异步编程。async与await是两个关键字,用于异步编程。
async定义了一个函数为异步函数,因为异步编程中的耗时操作是非阻塞的。await则是用于等待耗时操作完成的关键字,它只能在异步函数中使用。
下面是async与await的使用规则:
定义异步函数:使用async关键字定义一个异步函数,定义格式为:async def 函数名(参数列表)。
需要等待的操作:在异步函数中,使用await关键字,等待某个操作完成。
调用异步函数:由于异步函数不是立即执行的,需要使用Event Loop调用异步函数。
下面是一个使用async与await的例子:
import asyncio
async def task1():
print("Start Task1")
await asyncio.sleep(3) # 等待3秒
print("End Task1")
async def task2():
print("Start Task2")
await asyncio.sleep(5) # 等待5秒
print("End Task2")
loop = asyncio.get_event_loop() # 获取Event Loop
tasks = [loop.create_task(task1()), loop.create_task(task2())] # 将两个异步函数添加到任务列表中
loop.run_until_complete(asyncio.wait(tasks)) # 执行所有的任务
loop.close() # 关闭Event Loop
在上面的例子中,定义了两个异步函数,分别为task1和task2。在调用时使用了asyncio.sleep()函数等待一段时间,模拟耗时操作。在主程序中,获取了Event Loop,并使用loop.create_task()函数将两个异步函数添加到任务列表中,最后使用loop.run_until_complete()函数执行所有任务。
输出结果为:
Start Task1 Start Task2 End Task1 End Task2
从输出结果中可以看出,task1和task2函数在异步执行时,不像同步编程需要等待任务完成后才能进行下一个任务。这就是异步编程的优势所在。