精华内容
下载资源
问答
  • python 异步调用函数

    2021-04-01 21:09:42
    from threading import Thread def async(f): def wrapper(*args, **kwargs): thr = Thread(target=f, args=args, kwargs=kwargs) thr.start() return wrapper @async def func(self): ...
    from threading import Thread
    
    
    def async(f):
      def wrapper(*args, **kwargs):
        thr = Thread(target=f, args=args, kwargs=kwargs)
        thr.start()
      return wrapper
      
    @async
    def func(self):
    	print(1)
    
    展开全文
  • 今天小编就为大家分享一篇Python 实现异步调用函数的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python 实现异步调用函数执行 async

    千次阅读 2020-01-05 00:51:14
    Python 实现异步调用函数执行 async 在实现异步调用之前我们先进行什么是同步调用和异步调用 同步:是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行...

    Python 实现异步调用函数执行 async

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

    • 同步:是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行
    • 异步:是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果

    分析一下,下面的例子:
    定义了一个装饰器 async 和 A 、B 两个function 函数
    A 里面sleep 10s , 然后打印 a function 字符串
    B 里面直接打印 b function 字符串
    我们顺序调用两个功能:
    A()
    B( )

    由于函数A在睡的状态,我们又不希望程序被阻塞在函数A的睡的状态,所以我们采用异步执行,即在函数A睡的状态,让其他的任务执行。

    # -*- coding: utf-8 -*-
    # @File   : yibu.py
    # @Author : Runpeng Zhang
    # @Date   : 2020/1/5
    # @Desc   : None
    
    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(3)
        print("函数A睡了3秒钟。。。。。。")
        print("a function")
    
    
    def B():
        print("b function")
    
    
    A()
    B()
    

    在这里插入图片描述

    实战

        def async(f):
            def wrapper(*args, **kwargs):
                thr = Thread(target=f, args=args, kwargs=kwargs)
                thr.start()
    
            return wrapper
    
        @async
        def run_fcfs(self):
            self.process_ready_list.sort(key=functools.cmp_to_key(lambda x, y: x.commit < y.commit))
            for process in self.process_ready_list:
                self.var_id = process.id
                self.var_name = process.name
                self.var_begin = self.time
                self.var_source = process.source
                self.var_state = 'Run'
                process.state = 'Finish'
                tmp = process.need
                for i in range(int(process.need)):
                    self.time += 1
                    tmp -= 1
                    self.var_need = tmp
                    self.var_run = (process.need - tmp)
                    self.get_tree0()
                    sleep(1)
                self.process_finish_list.append(process)
            self.process_ready_list.clear()
            self.get_tree_fcfs()
            self.ing_init()
    
        def get_tree0(self):
            # 删除原节点
            for _ in map(self.tree0.delete, self.tree0.get_children("")):
                pass
            self.tree0.insert("", "end", values=(
                self.var_id, self.var_name, self.var_begin, self.var_run, self.var_need,
                self.var_source, self.var_state))
            print('tree0.after---')
            self.tree0.after(500, self.get_tree)
    

    类似于我想做一个(图形界面)逐秒+1, a = 0,再过一秒变成a=1,然后我图形Frame是设定了多少毫秒更新一下,但是如果我从a=0到a=100,但我这只是重复了time.sleep(1)一百次,实际的运行时间并没有多少毫秒来达到刷新,所以感觉我这种方式是矛盾的 !然后经过询问浩哥的建议,采用异步调用函数方式来执行。

    展开全文
  • 主要介绍了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

     

    转载于:https://www.cnblogs.com/sui776265233/p/10950001.html

    展开全文
  • lua-python-async:允许从Python调用Lua函数以及从Lua调用异步Python函数
  • Python 实现异步调用函数

    万次阅读 2018-06-14 14:07:37
    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 ...

    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:
        @async_call
        def hello( self ):
            self.__count += 1
            print(int(time.()))
            sleep(2)
            print(int(time.()))
            return
    
    if __name__ == "__main__":
    
        AA().hello()
    
    展开全文
  • python异步函数调用同步函数

    千次阅读 2019-08-24 08:44:13
    异步函数调用同步函数 普通函数里面不能await,只有async函数才能await。也就是说,同步函数执行的时候会阻塞所有协程。 直接调用 如果同步函数执行的时间很短。就直接调用。 在执行器里跑 如果同步函数执行的时间很...
  • 1 import time 2 from concurrent.futures import ThreadPoolExecutor 3 4 def RunBenchmark(url): 5 print('GET %s' % url) 6 response = url 7 time.sleep(3) ... 8 return(url+" F...
  • python 异步调用

    2020-11-16 18:43:02
    最近遇到个问题,NLP相关的代码,尤其是DL相关的代码,处理千万级数据显得会慢一些,有可能要好几个小时,那前端的等待是不可行的,这个时候就需要采用python异步函数了。 具体可以参加以下链接: ...
  • 目录 Python并发编程06 /同步/异步调用/异步调用+回调函数 1.如何看源码 2.昨日回顾 3.阻塞、同步调用、异步调用 3.1概念 3.2异步调用 3.3同步调用 3.4异步如何取结果 ...
  • 2.异步调用 同步调用:提交完任务后,就在原地等待任务执行完后,拿到结果,再执行下一行代码 同步调用,导致程序串行执行 from concurrent.futures import ThreadPoolExecutor import time import random ...
  • 主要介绍了python使用multiprocessing模块实现带回调函数异步调用方法,实例分析了multiprocessing模块异步调用的相关使用技巧,需要的朋友可以参考下
  • Python多线程异步调用

    2021-01-28 16:09:29
      本博客主要实现一个python多线程异步调用的demo。   程序功能简介:调用main_func作为主程序,主程序内部创建两个线程,分别建立线程ID、线程名和线程内部执行延迟时间,两个线程内部分别调用函数print_time...
  • 目录 1. 阻塞与非阻塞 2. 同步与异步 2.1 异步调用 2.2 同步调用 2.3 异步调用回收的第一种方式 3. 异步调用+回调函数 3.1 requests模块 3.2 异步调用回收的第二种方式 ...
  • 下边代码段是关于python通过multiprocessing 实现带回调函数异步调用的代码。 from multiprocessing import Pool def f(x): if __name__ == '__main__': pool = Pool(processes=1) # Start a worker processes....
  • python Async/Await 异步函数中互相调用

    千次阅读 2019-12-28 13:19:14
    # demo.py import asyncio, time # asyncio.wait() 等待执行完成 async def foo(): await asyncio.sleep(2) return 50 async def main(): task = asyncio.Task(foo()) # 执行其他任务 print('看看会不会提前...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 371
精华内容 148
关键字:

python异步调用函数

python 订阅