模板
import asyncio
async def func1():
pass
await asyncio.sleep()
pass
async def func2():
pass
await asyncio.sleep()
pass
async def func3():
pass
await asyncio.sleep()
pass
# 方法一:
async def main():
f1 = func1()
await f1 # 一般await挂起操作放在协程对象前面,await必须卸载async函数里
f2 = func2()
await f2
f3 = func3()
await f3
# 方法二(推荐):
async def main():
tasks = [
asyncio.create_tasks(func1()),
asyncio.create_tasks(func2()),
asyncio.create_tasks(func3())]
await asyncio.wait(tasks)
if "__name__" == "__main__":
asyncip.run(main())
import asyncio
async def download(url):
await asyncio.sleep() # 发起网络请求
async def main():
urls= []
tasks = []
for url in urls:
d = asyncio.create_tasks(download(url))
tasks.append(d)
await asyncio.wait(tasks)
if "__name__" == "__main__":
asyncio.run(main())
import asyncio
import aihttp
async def aiodownload(url):
name = something
async with aiohttp.ClinetSession() as session:
async with session.get() as response:
response.content.read()
response.text() # 必须加()
repsonse.json()
# 可以学习aiofiles模块,改善写入文件效率
with open(name, mode="wb") as f:
f.write(awit response.content.read()) # 读取内容是异步的,需要挂起