线程装饰器,实现异步

线程装饰器,实现异步,第1张

线程装饰器,实现异步,第2张

import time
def run_async(func):
    from threading import Thread
    from functools import wraps
    @wraps(func)
    def async_func(*args, **kwargs):
        func_hl = Thread(target = func, args = args, kwargs = kwargs)
        func_hl.start()
        # func_hl.join(),  阻塞主进程(挡住,无法执行 join 以后的语句),专注执行多线程。
        # func_hl.join(2), 设置参数后,则等待该线程这么长时间就不管它了(而该线程并没有结束)。不管的意思就是可以执行后面的主进程了。
        return func_hl
    return async_func

@run_async
def child():
    time.sleep(4)
    print('thread child')

@run_async
def child1():
    time.sleep(2)
    print('thread child1')

def main():
    child()
    child1()
    print('Done')

In [27]: main() Done

In [28]: thread child1 thread child

----------------------- 以下是精选回复-----------------------

答:例子会有创建孤儿进程的可能
答:订正,例子应该是不会有问题的
答:这不就相当于多开了一个线程跑这个函数么。。。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 线程装饰器,实现异步

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情