@FOUREX

Как сделать так что бы Socket не стопорил цикл?

import socket

while True:
	data = connection.recvfrom(1024)
	players = literal_eval(data[0].decode("utf8"))


	pygame.draw.circle(sc, (255, 255, 255), (players), 6)


У меняв цикле есть
data = connection.recvfrom(1024)
, и пока сервер не отправит пакет, цикл стоит на месте. Как можно это исправить?
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Есть разные способы. Можно получать данные в отдельном потоке, но это несёт свои проблемы, и довольно много.

Я бы посоветовал освоить использование select() - эта функция позволяет узнать, есть ли в сокете непринятые данные, прежде чем пытаться их принять.

Также можно попробовать освоить работу через asyncio, это упрощает совершенствование приложения в дальнейшем. Но это также сложнее для начинающего, нужно немножко "вывихнуть мозг" чтобы понять, как работает асинхронная программа.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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