【发布时间】:2021-05-19 17:54:08
【问题描述】:
我有想要异步运行的代码。我希望输出是以下之一:
Getting forecast 1
Getting forecast 2
Forecast 2 retrieved
Forecast 1 retrieved
或者
Getting forecast 1
Getting forecast 2
Forecast 1 retrieved
Forecast 2 retrieved
但是,它似乎是同步运行的,因为每次我运行它都会得到
Getting forecast 1
Getting forecast 2
Forecast 1 retrieved
Forecast 2 retrieved
代码附在下面:
import asyncio
import random
import pandas as pd
import numpy as np
async def get_forecast1():
print('Getting forecast 1')
await asyncio.sleep(random.randint(0 , 10))
return pd.DataFrame(np.zeros((2,2)))
async def retrieve_forecast1():
forecast1 = await get_forecast1()
print('Forecast 1 retrieved')
return forecast1
async def get_forecast2():
await asyncio.sleep(random.randint(0 , 10))
return pd.DataFrame(np.zeros((3,3)))
async def retrieve_forecast2():
print('Getting forecast 2')
forecast2 = await get_forecast2()
print('Forecast 2 retrieved')
return forecast2
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(retrieve_forecast1(), retrieve_forecast2()))
【问题讨论】:
标签: python python-3.x asynchronous python-asyncio