python异步编程-线程异步

一.为何要用到异步

  博主在工作中遇到了以下问题,开发接口爬取数据代码完成之后要写入缓存,但是服务器带宽不是很高,在存入数据库的过程花费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())

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfszg.html