Python: как запустить input() параллельно с print()?

input() в python полностью стопит весь код до тех пор, пока пользователь не введет данные. Можно ли как-то запустить input() параллельно вместе с print()? Пишу программу чата между двумя устройствами в локальной сети и нужно, чтобы пользователь мог одновременно читать сообщения (print()) и в любой момент отправлять свои так, чтобы программа не замораживалась пока он вводит данные.

На данный момент ввод реализован в отдельном окне :(


Ответы (2 шт):

Автор решения: Sergei Kirjanov

Python поддерживает различные формы конкурентности (asyncio,threading,multiprocessing): https://habr.com/ru/post/421625/

С asyncio и threading память "потоков" общая, как вам видимо и надо.

Различия в синтаксисе и в соотношении с потоками ОС.

→ Ссылка
Автор решения: Dmytro Hoi

То что вы описали происходит из-за GIL.

Global Interpreter Lock (GIL) — это способ синхронизации потоков, который используется в некоторых интерпретируемых языках программирования, например в Python и Ruby.

Для реализации чата стоит взять socket. Вопрос по реализации простого чата в английской версии StackOverflow.

В этом случае необходимо создать сервер и отдельный клиент, таким образом через sockets в локальной сети вы сможете передавать и получать информацию на всех клиентах одновременно.

Статья о socket на Хабре

→ Ссылка