Можно ли обрабатывать события pygame в списке select.select?

Документация для select.select для python говорит:

Обратите внимание, что в Windows это работает только для сокетов; в других операционных системах он также работает для других типов файлов (в частности, в Unix, он работает на трубах).

Моя группа разрабатывает упрощенную многопользовательскую игру с использованием pygame и сокетов . (Мы не используем Twisted или zeromq или любые подобные библиотеки, это единственное ограничение).

Теперь, для дизайна игры; мы хотим, чтобы игрок отправлял данные на сервер, когда ключевое событие происходит на экране pygame. В противном случае сокет стороны клиента / игрока будет подключен к серверу и будет прослушивать изменения, происходящие на стороне других игроков. Для этой задачи мне нужно, чтобы pygame и socket работали параллельно. Мне было рекомендовано использовать select module у нескольких пользователей на #python.

Могу ли я сделать что-то вроде:

 inp = [self.sock, pygame.event.get] out = [self.server] i, o, x = select.select( inp, out, [] ) 

Если нет, каков должен быть путь?

    Вы можете использовать потоки для этой задачи. Нужно ли обрабатывать сообщения сервера и события pygame последовательно (не одновременно)? Если это так, вы можете сделать следующее:

     class SocketListener(threading.Thread): def __init__(self, sock, queue): threading.Thread.__init__(self) self.daemon = True self.socket = sock self.queue = queue def run(self): while True: msg = self.socket.recv() self.queue.put(msg) class PygameHandler(threading.Thread): def __init__(self, queue): threading.Thread.__init__(self) self.queue = queue self.daemon = True def run(self): while True: self.queue.put(pygame.event.wait()) queue = Queue.Queue() PygameHandler(queue).start() SocketListener(queue).start() while True: event = queue.get() """Process the event()""" 

    Если нет, вы можете обрабатывать события внутри методов SocketListener классов PygameHandler и SocketListener .