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利用elaphe制作二维条形码实现代码
May 25 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
Django中的用户身份验证示例详解
Aug 07 Python
Python3分析处理声音数据的例子
Aug 27 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
Feb 07 Python
python标准库OS模块详解
Mar 10 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 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
php下MYSQL limit的优化
2008/01/10 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
Javascript var变量隐式声明方法
2009/10/19 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
js图片预加载示例
2014/04/30 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
python 异常处理总结
2016/10/18 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
Python中遍历列表的方法总结
2019/06/27 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
机电一体化大学生求职信
2013/11/08 职场文书
校运会入场式解说词
2014/02/10 职场文书
小学生操行评语大全
2014/04/22 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
婚宴邀请函
2015/01/30 职场文书
加班费申请报告
2015/05/15 职场文书
医者仁心观后感
2015/06/17 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
在Docker容器中部署SQL Server
2022/04/11 Servers