python async await案例
时间: 2023-04-25 20:01:10 浏览: 88
Python的async await是一种异步编程的方式,它可以让我们在不阻塞主线程的情况下执行异步任务。下面是一个简单的async await案例:
```python
import asyncio
async def hello():
print("Hello")
await asyncio.sleep(1)
print("World")
async def main():
await asyncio.gather(hello(), hello(), hello())
asyncio.run(main())
```
这个例子中,我们定义了一个async函数hello(),它会打印出“Hello”,然后等待1秒钟,最后再打印出“World”。我们还定义了一个async函数main(),它会同时执行三个hello()函数。我们使用asyncio.gather()函数来并发执行这三个函数。
最后,我们使用asyncio.run()函数来运行main()函数。这个函数会创建一个事件循环,并在事件循环中执行main()函数。在这个例子中,我们使用asyncio.sleep()函数来模拟一个异步任务,但实际上,我们可以使用任何异步操作,比如网络请求、数据库查询等。
相关问题
给我一个python websockets案例
可以参考以下代码:
import asyncio
import websockets
async def hello(websocket, path):
name = await websocket.recv()
print(f"Received {name}")
greeting = f"Hello {name}!"
await websocket.send(greeting)
print(f"Sent {greeting}")
async def main():
async with websockets.serve(hello, "localhost", 8765):
await asyncio.Future() # run forever
asyncio.run(main())
python 从列中中取任务 异步执行 案例
下面是一个使用异步执行方式从列中取任务并执行的 Python 代码示例:
```python
import asyncio
async def worker(task):
# 这里是任务执行的代码逻辑,例如执行一个 HTTP 请求等
print(f"Processing task: {task}")
await asyncio.sleep(1)
print(f"Task {task} done")
async def main():
# 定义一个任务队列
task_queue = asyncio.Queue()
# 往任务队列中添加任务
for i in range(10):
await task_queue.put(i)
# 定义一个协程池,最多同时执行 3 个协程
workers = [asyncio.create_task(worker(task_queue)) for _ in range(3)]
# 等待所有协程执行完成
await asyncio.gather(*workers)
asyncio.run(main())
```
在上面的代码中,我们通过 `asyncio.Queue` 来实现了一个任务队列,往队列中添加了 10 个任务。然后,我们定义了一个 `worker` 协程函数,用来执行任务。在 `main` 函数中,我们创建了一个协程池,最多同时执行 3 个协程。最后,我们使用 `asyncio.gather` 等待所有协程执行完成。
在执行上面的代码时,你会发现三个任务会同时执行,直到其中一个任务执行完成后,才会有新的任务被执行。这就是异步执行的特点,可以充分利用 CPU 和 IO 资源,提高程序效率。