Python 如何防止windows上的原始输入阻塞?

Python 如何防止windows上的原始输入阻塞?,python,windows,sockets,python-multithreading,raw-input,Python,Windows,Sockets,Python Multithreading,Raw Input,我正在尝试构建一个基本的聊天应用程序,我需要它来发布来自其他用户的消息,同时等待客户端的输入 当然,对于这种情况,select()不是Windows上的选项 我还能做什么 我尝试了此操作,但程序仍在等待输入,然后显示其他消息: from socket import * from threading import * s=socket(AF_INET,SOCK_STREAM) s.connect(('10.0.0.11',1340)) def sender(): while (True):

我正在尝试构建一个基本的聊天应用程序,我需要它来发布来自其他用户的消息,同时等待客户端的输入

当然,对于这种情况,
select()
不是Windows上的选项

我还能做什么

我尝试了此操作,但程序仍在等待输入,然后显示其他消息:

from socket import *
from threading import *
s=socket(AF_INET,SOCK_STREAM)
s.connect(('10.0.0.11',1340))
def sender():
    while (True):
        try:
            s.send(raw_input(">> "))
        except:
            return
def geter():
    while(True):
        print s.recv(1000)
Thread(target=sender).start()
Thread(target=geter).start()

如果您想将控制台分为两个窗格,一个滚动视图用于在消息到达时显示消息,另一个用于使用输入,那么您就不能使用标准I/O来读取消息。Windows上的Python有可用的curses控制台/终端UI库版本,这可能有助于以跨平台的方式实现类似的功能,或者您可以使用GUI而不是控制台/终端界面。如果要将控制台拆分为两个窗格,一个用于在消息到达时显示消息的滚动视图和一个用于输入的滚动视图,那么您就不能将标准I/O用于熟读。Windows上的Python可以使用curses控制台/终端UI库,这可能有助于以跨平台的方式实现类似的功能,或者您可以使用GUI而不是控制台/终端界面。