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网络编程学习笔记(五):socket的一些补充
Jun 09 Python
简单介绍Python中的readline()方法的使用
May 24 Python
python简单实现刷新智联简历
Mar 30 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
Python实现的个人所得税计算器示例
Jun 01 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
python异常处理和日志处理方式
Dec 24 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
Python日志logging模块功能与用法详解
Apr 09 Python
Python小白不正确的使用类变量实例
May 29 Python
Python常用数据分析模块原理解析
Jul 20 Python
Python经常使用的一些内置函数
Apr 11 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 iconv函数的使用详解
2013/06/09 PHP
php实现简单四则运算器
2020/11/29 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
[01:13]这,就是刀塔
2014/07/16 DOTA
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
pygame实现打字游戏
2021/02/19 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
用Python写一个for循环的例子
2016/07/19 面试题
计算机应用专业毕业生求职信
2013/10/24 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
Nginx 常用配置
2022/05/15 Servers