Задать вопрос
0ralo
@0ralo
Python backend developer

AsyncIO python как не ждать ответ от функции?

Здравсвуйте,у меня проблема с выполнением моего кода,и я пролазил весь интернет и не смог найти ответа на мой вопрос(извините) так вот,элементарный пример:
def first():
    sleep(30)
    print(2)
def second():
    sleep(20)
    print(1)
    
def main():
    first()
    second()
    print("Продолжаем")
main()

Я хочу что бы вывод был таким:

Продолжаем
1
2

Я знаю что надо использовать AsyncIO
но я уже довольно продолжительное время не могу разобраться в этом модуле.Если можно я бы хотел увидеть рабочий пример моего "Кода" заранее спасибо.
  • Вопрос задан
  • 593 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
Для вашей задачи лучше подойдут потоки.
from time import sleep
from threading import Thread


def first():
    sleep(3)
    print(2)


def second():
    sleep(3)
    print(1)
    

def main():
    Thread(target=first).start()
    Thread(target=second).start()
    print("Продолжаем")


main()


PS D:\Dropbox\Develop\all_tests> python threads.py
Продолжаем
1
2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlexBoss
Продолжаем
Ваш ответ:1
Ваш ответ:2

import asyncio

async def first():
    await asyncio.sleep(30)
    return (2)
async def second():
    await asyncio.sleep(20)
    return (1)
    
async def main():
    print("Продолжаем")
    for fut in asyncio.as_completed([first(), second()]):
        resp = await fut
        print(f'Ваш ответ:{resp}')
asyncio.run(main())
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы