Python异步编程和事件驱动

本文介绍了Python的异步编程,包括同步和异步的概念、同步和异步编程模型、操作系统中的进程变化状态以及不同的IO编程模型。重点讨论了异步编程在解决I/O瓶颈和提高效率上的作用,同时提到了事件驱动模型在处理大量任务和I/O操作时的应用,如Tornado、Twisted和Gevent等框架。
摘要由CSDN通过智能技术生成

1、异步编程

[1] 同步和异步描述的是进程/线程的调用方式

同步和异步

  • 同步调用指的是线程发起调用后,一直等待调用返回后才继续执行下一步操作,这并不代表CPU在这段时间内也会一直等待,操作系统多半会切换到另一个线程上去,等到调用返回后再切换回原来的线程。

  • 异步就相反,发起调用后,线程继续向下执行,当调用返回后,通过某种手段来通知调用者。

解释和说明

  • 我们需要注意同步和异步过程中的调用返回,指的是内核进程将数据复制到调用进程。上面说的顺序式编程里面,通常调用就是同步的,上一步执行结束之后才会执行下一步。而异步编程中,如果遇到等待的操作,会继续往下执行,直到请求返回结果在进行处理。

  • 写一个使用多线程或多进程抓取网站内容的爬虫,但由于网络请求或对方网站等问题,导致某段时间内的请求网站请求很慢。即使设置的超时时间,那么在超时时间到来之前,这些进程或线程都是一个等待的状态,什么也干不了。

  • 而异步编程就很适合使用在如上的场景中,它可以通过切换任务的方式尽量减少闲置时间。如遇到等待的请求就先回跳过并执行下一个请求,等执行完成之后再回到这个请求。如果还是没有就绪,就切换到下下一个请求。

[2] 同步和异步编程模型解释及其图示说明

单线程的同步模型

在一个时刻,只能有一个任务在执行,并且前一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值