如何使用Python中的异步函数进行并发编程
发布时间:2023-06-21 03:38:54
Python异步编程是指在执行IO操作时,CPU空闲的时间可以被用于执行其他任务,从而提高处理效率。
Python 3.5之后的版本引入了async和await关键字,结合asyncio模块实现异步编程。
以下是实现异步编程的步骤:
1、定义协程函数,即使用async关键字定义一个函数,用于执行IO操作并返回结果。
2、创建一个事件循环,用于管理异步任务的执行。可以使用asyncio.get_event_loop()函数获取事件循环。
3、在事件循环中使用asyncio.ensure_future()函数将协程函数封装为一个Task任务,加入到事件队列中等待执行。
4、运行事件循环,开始执行异步任务。
下面是一个例子,演示如何使用Python中的异步函数进行并发编程:
import asyncio
async def fetch(url):
print('start fetching', url)
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
print('end fetching', url)
return await response.text()
async def main():
urls = [
'https://www.python.org',
'https://www.baidu.com',
'https://www.sina.com.cn',
'https://www.douban.com'
]
tasks = [asyncio.ensure_future(fetch(url)) for url in urls]
responses = await asyncio.gather(*tasks)
print(responses)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
以上代码中,定义了一个fetch()函数用于获取指定url的返回结果。接着,定义了一个main()函数用于创建多个协程任务,使用 asyncio.gather()函数等待协程任务执行完毕,并打印返回结果。
最后,通过事件循环运行main()函数并执行异步任务。
总结:
Python中的异步编程通过async和await关键字以及asyncio模块实现,在执行IO操作时,可以通过事件循环调度其他任务,从而提高程序效率。使用异步编程,可以在不增加线程数量的情况下,实现对并发任务的高效处理。
