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 ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
采用python实现简单QQ单用户机器人的方法
Jul 03 Python
Python中Random和Math模块学习笔记
May 18 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
python中常用的九种预处理方法分享
Sep 11 Python
python机器学习之随机森林(七)
Mar 26 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
python tkinter组件摆放方式详解
Sep 16 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
Jan 06 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
笑谈配置,使用Smarty技术
2007/01/04 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
jQuery toggle()设置CSS样式
2009/11/05 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
木马的传播途径主要有哪些
2016/04/08 面试题
小学生红领巾广播稿
2014/01/21 职场文书
先进集体事迹材料
2014/02/17 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
应聘教师自荐信
2015/03/26 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
Golang获取List列表元素的四种方式
2022/04/20 Golang