协程移步执行
主要注意:
- 当作任务执行的函数前面要加async修饰。async def req(url):
- 在被当做任务调用的函数(如async def req(url)函数)中,如果用于异步,函数中的语句必须是支持异步,在req(url)函数中,time.sleep()就是同步的语句,在函数运行时不会出错,但会同步执行,必须用asyncio.sleep(2)这个能异步执行语句才能实现异步执行。
- 生成协程任务用: task=asyncio.ensure_future(c)
- 放入的任务要用asyncio.wait(tasks)才能实现异步执行
loop=asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
import time
tasks=[]
urls=['url1','url2','url3','url4']
async def req(url):
print('start')
asyncio.sleep(2)#这是异步执行语句
#time.sleep()#这是同步执行语句,所以不能用这种语句
print('end')
for url in urls:
c=req(url)
task=asyncio.ensure_future(c)
tasks.append(task)
loop=asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
演讲
网友评论