单事件循环
# 事件循环 + 回调(驱动生成器)+ epoll(IO多路复用)
# asyncio 是python用于解决异步io编程的一整套解决方案
import time
import asyncio
async def get_html(url):
print("start get url")
await asyncio.sleep(2) # 在协程函数里面不能使用普通的time.sleep()
print("end get url")
if __name__ == '__main__':
start_time = time.time()
# 创建一个事件循环器
loop = asyncio.get_event_loop()
# 使用以下方法 传入要执行的协程函数
loop.run_until_complete(get_html("http://www.baidu.com"))
print(time.time()-start_time)
多次并发
import time
import asyncio
async def get_html(url):
print("start get url")
await asyncio.sleep(2) # 在协程函数里面不能使用普通的time.sleep()
print("end get url")
if __name__ == '__main__':
start_time = time.time()
# 创建一个事件循环器
loop = asyncio.get_event_loop()
# 创建多组任务,并发多次
tasks = [get_html("http://www.baidu.com") for i in range(10)]
loop.run_until_complete(asyncio.wait(tasks))
print(time.time()-start_time)
获取结果
import time
import asyncio
async def get_html(url):
print("start get url")
await asyncio.sleep(2) # 在协程函数里面不能使用普通的time.sleep()
print("end get url")
return "aaa"
if __name__ == '__main__':
start_time = time.time()
# 创建一个事件循环器
loop = asyncio.get_event_loop()
# 获取结果 示例一
# get_future=asyncio.ensure_future(get_html("http://www.baidu.com"))
# loop.run_until_complete(get_future)
# print(get_future.result())
# 获取结果 示例二
task = loop.create_task(get_html("http://www.baidu.com"))
loop.run_until_complete(task)
print(task.result())
print(time.time()-start_time)
标签:__,get,认识,time,print,loop,asyncio From: https://www.cnblogs.com/niunai/p/16890766.html