python 实现异步执行

发布时间:2019-09-09 08:44:27编辑:auto阅读(1890)

    python 实现异步执行

    网上看到个例子怎样利用 threading 模块实现异步执行,自己动手试了试,写了个装饰器的例子,很实用。
    把 async 分离开,放到一个单独的模块中,就可以把它当成一个模块实用

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

    #coding:utf-8
    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(20)
        print "a function"
    
    def B():
        print "b function"
    
    A()
    B()

关键字