一.为何要用到异步
博主在工作中遇到了以下问题,开发接口爬取数据代码完成之后要写入缓存,但是服务器带宽不是很高,在存入数据库的过程花费2-5s(io延迟),这样就大大影响了接口的性能,于是想到了使用异步存储。
二.了解异步编程为完成某个任务,不同程序单元之间过程中无需通信协调,也能完成任务的方式。
不相关的程序单元之间可以是异步的。
例如,爬虫下载网页。调度程序调用下载程序后,即可调度其他任务,而无需与该下载任务保持通信以协调行为。不同网页的下载、保存等操作都是无关的,也无需相互通知协调。这些异步操作的完成时刻并不确。
三.线程异步原理:使用线程类threading.Thread调用函数
应用:通过线程调用的方式,来达到异步非阻塞的效果,也就是说主程序无需等待线程执行完毕,仍然可以继续向下执行。
Python多线程详解:https://www.cnblogs.com/tkqasn/p/5700281.html
代码实例:
同步阻塞代码
1 import threading,time 2 3 def thead(num): 4 time.sleep(1) 5 print("阻塞程序%s开始执行"%num) 6 time.sleep(3) 7 print("阻塞程序%s执行完毕"%num) 8 9 def main(): 10 print("主方法开始执行") 11 12 for i in range(1,3): 13 thead(i) 14 15 print("主方法执行完毕") 16 return 17 18 if __name__ == '__main__': 19 print(time.ctime()) 20 num = main() 21 print("返回结果为%s"%num) 22 print(time.ctime())