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 2018-12-29 19:53:23 +08:00 via iPhone
例子会有创建孤儿进程的可能
|
2
neoblackcap 2018-12-29 20:08:16 +08:00
订正,例子应该是不会有问题的
|
3
shiyanfei5 2019-01-02 22:42:32 +08:00
这不就相当于多开了一个线程跑这个函数么。。。
|