import time import asyncio #统计运行时间的装饰器
def run_time(func):
def wrapperfunc(*argv, **kwargv):
now = lambda : time.time()
start = now()
func(*argv, **kwargv)
end = now()
runTime = end - start
print("")
print("run_time:{}s".format(runTime))
return wrapperfunc #程序运行区域划分
def printf(func):
def wrapperfunc(*argv, **kwargv):
print("start:***********")
func(*argv, **kwargv)
print("end:*************")
return wrapperfunc async def do_some_work(x):
time.sleep(0.5)
print("waiting: ", x)
await asyncio.sleep(x)
print("complete: ", x)
return 'Done after {}s'.format(x) async def hong():
print("waiting: ", 5)
await asyncio.sleep(5)
return "ok" #获得协程处理完毕后的结果
def test(io):
print("")
print("协程回调功能测试")
print(type(io), "-----"+str(io))
print("get:", io.result())
print("") def test1(t, future, *argv):
print("callback", t, future.result()) async def east():
#协程重新命名方便进行列表构建
north1 = do_some_work(1)
north2 = do_some_work(2)
north3 = do_some_work(4)
north4 = hong()
#创建task对象,可以获得协程运行后的结果
task4 = asyncio.ensure_future(north1)
task5 = asyncio.ensure_future(north2)
task6 = asyncio.ensure_future(north3)
task7 = asyncio.ensure_future(north4)
#协程task4处理完成后,调用test函数
task4.add_done_callback(test) tasks = [task4, task5, task6,task7]
return await asyncio.wait(tasks) @printf
@run_time
def main(a):
loop = asyncio.get_event_loop()
tasks, _ = loop.run_until_complete(east())
print("")
print("查看协程处理完毕后,保存的结果")
for task in tasks:
print(task.result()) main("lk")