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对象的深拷贝和浅拷贝详解
Aug 25 Python
Python中捕捉详细异常信息的代码示例
Sep 18 Python
在Python中的Django框架中进行字符串翻译
Jul 27 Python
详细介绍Python的鸭子类型
Sep 12 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 Python
Python使用Shelve保存对象方法总结
Jan 28 Python
通过实例了解python property属性
Nov 01 Python
python numpy数组中的复制知识解析
Feb 03 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
jupyter notebook的安装与使用详解
May 18 Python
Pandas之缺失数据的实现
Jan 06 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
第十四节 命名空间 [14]
2006/10/09 PHP
如何过滤高亮显示非法字符
2006/10/09 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
javascript smipleChart 简单图标类
2011/01/12 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
python检查指定文件是否存在的方法
2015/07/06 Python
Python网络编程详解
2017/10/31 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
Python帮你识破双11的套路
2019/11/11 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
局域网标准
2016/09/10 面试题
大学生自我评价怎样写好
2013/10/23 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
给老婆的保证书
2015/01/16 职场文书
辛亥革命观后感
2015/06/02 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电