
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
1 neoblackcap Dec 29, 2018 via iPhone 例子会有创建孤儿进程的可能 |
2 neoblackcap Dec 29, 2018 订正,例子应该是不会有问题的 |
3 shiyanfei5 Jan 2, 2019 这不就相当于多开了一个线程跑这个函数么。。。 |