Python实现异步并发
时间: 2023-11-05 10:50:44 浏览: 105
Python提供了多种异步并发编程的方式,包括协程、异步IO、多线程、多进程等。下面简单介绍一下协程和异步IO。
协程是Python中实现异步编程的一种方式,它通过在函数中使用`async`关键字来定义协程。协程的运行过程中,遇到IO操作时,会主动让出CPU,执行其他协程,等待IO操作完成后再继续执行。Python标准库`asyncio`提供了对协程的支持,可以使用`asyncio`中的`run_until_complete()`方法来运行协程。
下面是一个简单的协程的例子:
```python
import asyncio
async def hello():
print("Hello")
await asyncio.sleep(1)
print("World")
loop = asyncio.get_event_loop()
loop.run_until_complete(hello())
loop.close()
```
上述代码中,`hello()`函数是一个协程,其中`await asyncio.sleep(1)`表示等待1秒钟,模拟了一个IO操作。在`run_until_complete()`方法中运行协程,输出结果为:
```
Hello
World
```
异步IO是指在IO操作时,程序不会阻塞等待结果返回,而是继续执行其他任务,等待IO操作完成后再回来处理结果。Python标准库中的`asyncio`模块提供了对异步IO的支持。使用`asyncio`模块可以方便地实现异步IO操作,例如读写文件、网络请求等。
下面是一个简单的异步IO的例子:
```python
import asyncio
async def read_file():
with open("test.txt", "r") as f:
content = await f.read()
print(content)
loop = asyncio.get_event_loop()
loop.run_until_complete(read_file())
loop.close()
```
上述代码中,`read_file()`函数是一个协程,通过`await f.read()`实现了异步读取文件操作。在`run_until_complete()`方法中运行协程,输出文件内容。
以上是Python实现异步并发的两种方式,具体使用哪种方式取决于实际需求和场景。
阅读全文