线程装饰器,实现异步
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
----------------------- 以下是精选回复-----------------------
答:例子会有创建孤儿进程的可能
答:订正,例子应该是不会有问题的
答:这不就相当于多开了一个线程跑这个函数么。。。
0条评论