异步的时间等待
asyncio.sleep()
和 time.sleep()
是在不同上下文中使用的两个不同的睡眠函数。
time.sleep()
是 Python 标准库中的函数,用于在同步代码中暂停执行一段时间。当调用 time.sleep()
函数时,当前线程会被阻塞,无法执行其他任务,直到指定的睡眠时间过去。
示例使用 time.sleep()
函数的代码片段:
import time
print("Start")
time.sleep(2) # 暂停 2 秒
print("End")
asyncio.sleep()
是在异步代码中使用的函数,用于在协程中暂停执行一段时间。当调用 asyncio.sleep()
函数时,协程会暂时挂起,事件循环可以继续处理其他协程,同时等待指定的睡眠时间过去后,再恢复执行该协程。
示例使用 asyncio.sleep()
函数的代码片段:
import asyncio
async def my_coroutine():
print("Start")
await asyncio.sleep(2) # 暂停 2 秒
print("End")
asyncio.run(my_coroutine())
在异步代码中,可以使用 await
关键字来暂停协程的执行,其中 await asyncio.sleep()
用于模拟等待一段时间。在这段时间内,事件循环仍然可以处理其他协程或任务。
综上所述,主要区别在于 time.sleep()
阻塞整个线程的执行,而 asyncio.sleep()
只是暂停当前协程的执行,并允许事件循环去处理其他协程。因此,asyncio.sleep()
更适用于异步代码的场景。
协程中的异常处理
假如不做异常捕捉,是不能自己打印出错误的,很可能就是在中途退出了
所以一定要在其中捕捉一些异常