以下是一个使用asyncio的顺序版本的示例代码:
import asyncio
async def fetch_data(url):
# 模拟获取数据的耗时操作
await asyncio.sleep(1)
return f"Data from {url}"
async def main():
urls = ["https://example.com", "https://google.com", "https://bing.com"]
results = []
for url in urls:
data = await fetch_data(url)
results.append(data)
print(f"Fetched data from {url}")
print("All data fetched:")
for result in results:
print(result)
asyncio.run(main())
在这个例子中,我们定义了一个fetch_data
函数,它模拟了一个耗时的网络请求。main
函数是我们的入口点,它使用一个循环来按顺序获取每个URL的数据,并将结果存储在results
列表中。
通过使用await fetch_data(url)
,我们可以确保在请求数据时不会阻塞其他任务的执行。在每个数据请求完成后,我们将结果添加到results
列表中,并打印出被获取的URL。最后,我们打印出所有获取到的数据。
执行这段代码,你会看到输出结果按照顺序显示每个URL产生的数据。注意,这种顺序版本的缺点是每次请求都需要等待上一个请求完成,因此整体的执行时间会比较长。如果你想要并发地获取数据,你可以使用asyncio.gather
函数。