githubVladimirT
@githubVladimirT
Кодер, немного сисадмин

Как сделать асинхронное выполнение функций в Python3?

Есть две функции, нужно чтобы они выполнялись параллельно (одновременно слали данные и принимали).

def sender():
    msg = input("> ")

    if msg:
        connection.send(msg.encode('utf-8'))


def getter():
    try:
        data = connection.recv(2048).decode('utf-8')

        if data:
            print(data)

    except ConnectionResetError:
        print("[*] connection reseted")
        sys.exit()
  • Вопрос задан
  • 132 просмотра
Решения вопроса 2
Прочитать асинхронно input консоли можно так:
from asyncio import run, to_thread


async def main():
    data = await to_thread(input)

run(main())
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
inpit() асинхронным сделать можно как показано выше.

А дальше
async def sender():
    while True:
        ...

async def getter():
    ...

async def main():
    asyncio.create_task(sender())
    await getter()

asyncio.run(main())
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@RqL
Запишите их в двух разных файлах и запустите два разных файла одновременно. Одновременное их выполнение в одном запуске невозможно, так как ваш сервер устроен так, что он сидит и без остановки ждет, пока ему пришлют какие-то данные. Вы можете так же оставить функции в одном файле, но создать два новых файла в один импортировать client, а в другой server.
Ответ написан
Ваш ответ на вопрос

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

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