比requests更强大Pytho

最近公司Python后端项目进行重构,整个后端逻辑基本都变更为采用"异步"协程的方式实现。看着满屏幕经过asyncawait(协程在Python中的实现)修饰的代码,我顿时感到一脸懵逼,不知所措。

虽然之前有了解过"协程"是什么东西,但并没有深入探索,于是正好借着这次机会可以好好学习一下。

什么是协程?

简单来说,协程是一种基于线程之上,但又比线程更加轻量级的存在。对于系统内核来说,协程具有不可见的特性,所以这种由程序员自己写程序来管理的轻量级线程又常被称作"用户空间线程"。

协程比多线程好在哪呢?

1.线程的控制权在操作系统手中,而协程的控制权完全掌握在用户自己手中,因此利用协程可以减少程序运行时的上下文切换,有效提高程序运行效率。

2.建立线程时,系统默认分配给线程的栈大小是1M,而协程更轻量,接近1K。因此可以在相同的内存中开启更多的协程。

3.由于协程的本质不是多线程而是单线程,所以不需要多线程的锁机制。因为只有一个线程,也不存在同时写变量而引起的冲突。在协程中控制共享资源不需要加锁,只需要判断状态即可。所以协程的执行效率比多线程高很多,同时也有效避免了多线程中的竞争关系。

协程的适用不适用场景

适用场景:协程适用于被阻塞的,且需要大量并发的场景。

不适用场景:协程不适用于存在大量计算的场景(因为协程的本质是单线程来回切换),如果遇到这种情况,还是应该使用其他手段去解决。

初探异步


转载请注明:http://www.aierlanlan.com/rzfs/274.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了