asyncio 代码案例
时间: 2023-11-12 15:07:27 浏览: 76
以下是一个使用 asyncio 编写的简单代码案例:
```python
import asyncio
async def count():
print("One")
await asyncio.sleep(1)
print("Two")
async def main():
await asyncio.gather(count(), count(), count())
if __name__ == "__main__":
asyncio.run(main())
```
输出结果:
```
One
One
One
Two
Two
Two
```
此代码案例创建了一个名为 "count" 的协程,该协程打印 "One",然后使用 `asyncio.sleep(1)` 暂停 1 秒,最后再打印 "Two"。
然后,我们创建了一个名为 "main" 的协程,该协程使用 `asyncio.gather` 运行三个 "count" 协程。最后,我们使用 `asyncio.run` 运行 "main" 协程,以启动整个程序。
请注意,上述代码仅用于演示 asyncio 的基本用法,不能用于生产环境。
相关问题
asyncio简单案例
下面是一个简单的 asyncio 案例:
```python
import asyncio
async def my_coroutine(seconds):
print(f"开始睡眠 {seconds} 秒")
await asyncio.sleep(seconds)
print(f"{seconds} 秒已经过去")
loop = asyncio.get_event_loop()
loop.run_until_complete(my_coroutine(3))
```
上述代码定义了一个异步协程 `my_coroutine`,它接受一个整数参数 `seconds`,表示睡眠的时间。在协程中,先输出开始睡眠的信息,然后使用 `await asyncio.sleep(seconds)` 语句执行异步睡眠操作。最后,输出睡眠结束的信息。
在主程序中,我们使用 `asyncio.get_event_loop()` 获取一个事件循环对象 `loop`。然后,使用 `loop.run_until_complete()` 方法,将协程对象传递给它,从而运行协程。在本例中,我们运行了一个睡眠 3 秒的协程。
运行上述代码,将输出如下结果:
```
开始睡眠 3 秒
3 秒已经过去
```
可以看到,协程在异步运行时,程序并没有阻塞。我们使用 asyncio.sleep() 方法让协程进入睡眠状态,但同时程序可以执行其他任务。
获取 python websockets允许结束后返回值的代码案例
以下是一个获取 python websockets 允许结束后返回值的代码案例:
```python
import asyncio
import websockets
async def hello():
async with websockets.connect('ws://localhost:8765') as websocket:
await websocket.send('Hello, world!')
response = await websocket.recv()
return response
async def main():
task = asyncio.create_task(hello())
await asyncio.sleep(5)
task.cancel()
try:
await task
except asyncio.CancelledError:
print('Task cancelled')
if __name__ == '__main__':
asyncio.run(main())
```
这个代码案例中,我们使用了 asyncio 库来创建一个异步任务,该任务连接到本地的 WebSocket 服务器,并发送一条消息。然后,我们等待 5 秒钟,然后取消任务。在取消任务后,我们捕获了 asyncio.CancelledError 异常,并打印了一条消息。
阅读全文