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

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

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

同步:是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行

异步:是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果

分析一下,下面的例子:

定义了一个装饰器 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

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

时间: 2019-07-05

本文实例讲述了python使用multiprocessing模块实现带回调函数的异步调用方法.分享给大家供大家参考.具体分析如下: multipressing模块是python 2.6版本加入的,通过这个模块可以轻松实现异步调用 from multiprocessing import Pool def f(x): return x*x if __name__ == '__main__': pool = Pool(processes=1) # Start a worker processes. r

本文实例讲述了python定时执行指定函数的方法.分享给大家供大家参考.具体实现方法如下: # time a function using time.time() and the a @ function decorator # tested with Python24 vegaseat 21aug2005 import time def print_timing(func): def wrapper(*arg): t1 = time.time() res = func(*arg) t2 = t

仔细研读后学习了三个函数: eval:计算字符串中的表达式 exec:执行字符串中的语句 execfile:用来执行一个文件 需注意的是,exec是一个语句,而eval()和execfile()则是内建built-in函数. Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits

本文实例讲述了Python实现可设置持续运行时间.线程数及时间间隔的多线程异步post请求功能.分享给大家供大家参考,具体如下: #coding=utf8 ''' random.randint(a, b):用于生成一个指定范围内的整数. 其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b random.choice(sequence):从序列中获取一个随机元素 参数sequence表示一个有序类型(列表,元组,字符串) ''' import httplib,json im

async_call.py #coding:utf-8 from threading import Thread def async_call(fn): def wrapper(*args, **kwargs): Thread(target=fn, args=args, kwargs=kwargs).start() return wrapper test.py from time import sleep from async_call import async_call class AA: @

前言 本文主要给大家介绍了关于Python用字符串调用函数或方法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 先看一个例子: >>> def foo(): print "foo" >>> def bar(): print "bar" >>> func_list = ["foo","bar"] >>> for func in func_li

背景介绍 最近在为部门编写一个自动化测试工具,工具涉及到一个功能,即 将自动化测试生成的html报告截图,作为邮件正文,html文件上传到web服务器以链接形式添加到邮件中,最后发送邮件. 任务难点 之前从未接触过页面自动截图相关的方面,因此如何自动进行页面截图成为本地调研方向. 方案思考 在刚接到这个任务时,并不认同目前的方案.曾经一度认为,将html报告的内容写入邮件正文,即可通过html的形式发送邮件了.经过尝试后发现,邮件不支持带javascript的html.因此,选择了预览html并

因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼. 1.工具 火狐浏览器+firedebug插件,debug插件可才浏览器中附加组件中添加,其他浏览器也可以只要可以监控浏览器的网络行为即可. python+requests包 2.步骤 1)  先打开到登录界面,然后在按f12打开firedebug插件,此时debug无任何记录行为,然后点击刷新按钮,再点击登录按钮

如下所示: #先下载pyautogui库,pip install pyautogui import os,time import pyautogui as pag try: while True: print "Press Ctrl-C to end" x,y = pag.position() #返回鼠标的坐标 posStr="Position:"+str(x).rjust(4)+','+str(y).rjust(4) print posStr#打印坐标 time.

当Python中用到双重for循环设计的时候我一般会使用循环的嵌套,但是在Python中其实还存在另一种技巧--for复合语句. 简单写一个小程序,用于延时循环嵌套功能如下: #!/usr/bin/python defFunc1(ten_num,one_num): for i in range(ten_num): for j in range(one_num): print(10 * i + j) Func1(2,5)的执行结果如下: 0 1 2 3 4 10 11 12 13 14 以上是一个

php 异步调用方法 客户端与服务器端是通过HTTP协议进行连接通讯,客户端发起请求,服务器端接收到请求后执行处理,并返回处理结果. 有时服务器需要执行很耗时的操作,这个操作的结果并不需要返回给客户端.但因为php是同步执行的,所以客户端需要等待服务处理完才可以进行下一步. 因此对于耗时的操作适合异步执行,服务器接收到请求后,处理完客户端需要的数据就返回,再异步在服务器执行耗时的操作. 1.使用Ajax 与 img 标记 原理,服务器返回的html中插入Ajax 代码或 img 标记,img的s

一.语法:loadScript(url[,callback])或者loadScript(settings)二.settings支持的参数:url:脚本路径async:是否异步,默认false(HTML5)charset:文件编码cache:是否缓存,默认为truesuccess:加载成功后执行的函数,优先执行callback.三.调用举例: 复制代码 代码如下: //loadScript(url[,callback])loadScript("http://code.jquery.com/jque

先看map.map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 举例说明,比如我们有一个函数a(x)=x*2,要把这个函数作用在一个list [1, 2, 3, 4, 5]上,就可以用map()实现如下: 复制代码 代码如下: >>> def a(x): ...     return x * 2 ... >>> map(a, [1,2,3,4,5]) [2, 4, 6, 8, 10] map传入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值