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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.