python如何实现异步调用函数执行


Posted in Python onJuly 08, 2019

在实现异步调用之前我们先进行什么是同步调用和异步调用

  • 同步:是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行
  • 异步:是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果

分析一下,下面的例子:

定义了一个装饰器 async 和 A 、B 两个function 函数

A 里面sleep 10s , 然后打印 a function 字符串

B 里面直接打印 b function 字符串

我们顺序调用两个功能:

A()

B( )

由于函数A在睡的状态,我们又不希望程序被阻塞在函数A的睡的状态,所以我们采用异步执行,即在函数A睡的状态,让其他的任务执行

from threading import Thread
from time import sleep


def async(f):
  def wrapper(*args, **kwargs):
    thr = Thread(target=f, args=args, kwargs=kwargs)
    thr.start()

  return wrapper


@async
def A():
  sleep(10)
  print("函数A睡了十秒钟。。。。。。")
  print("a function")


def B():
  print("b function")


A()
B()

执行结果:

#b function
#函数A睡了十秒钟。。。。。。
#a function

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python struct模块解析
Jun 12 Python
Python实现的RSS阅读器实例
Jul 25 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
使用pyecharts无法import Bar的解决方案
Apr 23 Python
PyTorch学习笔记之回归实战
May 28 Python
python使用matplotlib绘制热图
Nov 07 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
原生python实现knn分类算法
Oct 24 Python
python如何爬取动态网站
Sep 09 Python
Python特殊属性property原理及使用方法解析
Oct 09 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
django中forms组件的使用与注意
Jul 08 #Python
python celery分布式任务队列的使用详解
Jul 08 #Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 #Python
Python数据类型之列表和元组的方法实例详解
Jul 08 #Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 #Python
Python实现的统计文章单词次数功能示例
Jul 08 #Python
用python建立两个Y轴的XY曲线图方法
Jul 08 #Python
You might like
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
世界上最大的艺术社区:SAA
2020/12/30 全球购物
Java语言程序设计测试题判断题部分
2013/01/06 面试题
实习护士自我鉴定
2013/10/13 职场文书
大学生毕业自我鉴定
2013/11/06 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
个人培训自我鉴定
2014/03/28 职场文书
创先争优承诺书范文
2014/03/31 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
社区反邪教工作方案
2014/06/16 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
2016年少先队活动总结
2016/04/06 职场文书
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS