python 异步编程

异步的时间等待

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() 更适用于异步代码的场景。

协程中的异常处理

假如不做异常捕捉,是不能自己打印出错误的,很可能就是在中途退出了

所以一定要在其中捕捉一些异常

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 异步编程是一种编程范式,它利用并发来提高程序的执行效率,特别是在处理I/O密集型任务时,比如网络请求、文件操作等。异步编程的核心在于避免了线程或进程切换带来的开销,让程序能够更高效地处理多个任务。 在Python中,异步编程主要通过以下几个库来实现: 1. **asyncio**:这是Python标准库的一部分,提供了创建异步任务和协程的基础。通过`async`和`await`关键字,可以编写协程(coroutine),这些是可以在事件循环中运行的轻量级代码块。 2. **Future 和 Task**:`asyncio.Future`和`asyncio.Task`用于封装异步操作的结果,Task是Future的包装器,提供了一些额外的功能,如跟踪状态和取消操作。 3. **Coroutines**(协程):通过定义带有`async def`的函数,函数内部可以使用`await`来挂起执行,直到依赖的异步操作完成。 4. **AIO库**(如Aiohttp、aioredis等):这些第三方库针对特定场景提供了异步版本,如Aiohttp用于非阻塞的HTTP客户端,aioredis用于异步操作Redis数据库。 5. **异步装饰器**:如`@aio.coroutine`(在Python 3.5及更早版本中使用)或`async def`(在Python 3.6及以上版本中)等,可以将常规函数转换为异步协程。 异步编程的一些关键概念包括: - **事件循环**:协调和调度所有协程的运行。 - **异步I/O**:通过非阻塞I/O,允许程序在等待I/O操作完成时继续执行其他任务。 - **回调和生成器**:早期的异步编程可能使用这些技术,但现代Python更倾向于使用async/await和Task。 如果你对异步编程有深入的兴趣,可能会问到: 1. 异步编程如何提高程序性能? 2. Python中如何正确地管理异步任务的执行顺序? 3. 异步编程中的“回调地狱”是什么,如何避免?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值