0%

python | asyncio 基础

异步编程可以在多线程的基础上更近一步。

而 python 中的异步编程和 js 的异步编程几乎一摸一样。


参考资料



为什么需要异步编程


考虑这样一种情况,假设你写爬虫,即便是写多线程或者多进程,如果你发出一个请求后,即便是线程的话,也需要等待返回才继续执行,也就是在等待返回的过程中,该线程是堵塞的。

那么,如果,不想让该线程堵塞,在线程等待返回的时候,转而让资源去处理其他事情,等返回回来之后,继续处理。

所以,这个时候就要用异步编程了。


所有的原始代码都能改成异步操作吗


比如,我使用 requests 库,我能把它改成异步操作吗?

答案是:使用 requests 确实可以改成 async/await 执行方式,但是,却不是异步操作,因为 requests 内部是阻塞的。就好像你可以用金漆染东西,但是,你不能说染过的就是纯金。

所以说,异步操作最好使用异步库莱操作。

  • aiohttp(异步网络请求库)
  • aiohttp-requests(让aiohttp用起来更方便的库)
  • aiofiles(异步文件操作库)
  • pillow(其实就是PIL库,代码中的图片操作有用到)
请我喝杯咖啡吧~