Я написал следующий код:
Код: Выделить всё
import asyncio
from concurrent.futures import ThreadPoolExecutor
async def factorial(number):
f = 1
for i in range(2, number + 1):
await asyncio.sleep(1)
f *= i
print(f"Task {number}: factorial({number}) = {f}")
return f
async def main():
# Schedule three calls *concurrently*:
executor = ThreadPoolExecutor(max_workers=10)
loop = asyncio.get_event_loop()
L = [await loop.run_in_executor(executor, factorial, i) for i in range(2,5)]
L = await asyncio.gather(*L)
print(L)
return(L)
if __name__ == '__main__':
a = asyncio.create_task(main())
if a.done():
res = a.result()
print("RESULT:",res)
print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
In[1] :< /p>
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Задание 2: факториал(2) = 2
Задание 3: факториал(3) = 6
Задание 4: факториал(4) = 24
[2, 6, 24]
Похоже, что print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") выполняется до того, как я получу результаты от asyncio.create_task(), и на самом деле я не вижу результатов, напечатанных на экране print("RESULT:",res).
Чего мне не хватает?
Любая помощь очень ценится.
Подробнее здесь: https://stackoverflow.com/questions/781 ... spyder-ide