协程是实现并发编程的一种方式。针对多线程而言,避免了上下文切换带来的性能瓶颈。
二、实现方式python3.7及以上版本,推出了工具包asyncio,可以利用该工程包实现并发编程。
import asyncio
from datetime import datetime
async def craw_task(task):
if not task:
raise Exception("task为空")
second = int(task.split("_")[-1])
await asyncio.sleep(second)
print("sleep {} s".format(second))
print("task:{} is done".format(task))
async def main(tasklist):
tasks= [asyncio.create_task(craw_task(task))for task in tasklist]
'''
for task in tasks:
await task
'''
await asyncio.gather(*tasks)
taskList =['task_1','task_2','task_3']
beginTime = datetime.now()
print("处理开始",beginTime)
asyncio.run(main(tasklist=taskList))
endTime = datetime.now()
costTime = (endTime -beginTime).seconds
print("deal these task ,cost {} s".format(costTime))



