我正在尝试为Python项目编写基本的聊天客户端,并已完成任务,非常简单。然而,当我递交时,他们询问我是否可以在检查消息时接受用户输入(对于尽早完成工作的人来说,这是一项额外的未标记任务)。Python:接受原始输入而另一个线程检查消息
我认为这与线程有关,所以我尝试创建一个接受用户输入的线程和一个用于检查消息的线程,但看起来raw_input会停止另一个线程。
我该如何在Python中做到这一点?也许我误解了线程是如何工作的? - Python的菜鸟
第二个尝试:
#Update last connection
s[user] = str(time.time());
#Start chat server
class chatServer (threading.Thread):
def __init__ (self, channel):
self.channel = channel
self.lastMessage = ""
threading.Thread.__init__ (self) #Pass to thread constructor
def messageOut (self):
while 1:
print "Asking for input"
message = raw_input("Message: ");
s[self.channel] = message;
time.sleep(1)
def messageIn (self):
while 1:
print "Checking for new messages"
if s[self.channel]!=self.lastMessage:
print s[self.channel]
self.lastMessage = s[self.channel]
time.sleep(1)
print "Welcome " + user + " type to send a message"
chatServer("channel1").messageIn()
chatServer("channel1").messageOut()
首先尝试:
#Start chat server
class chatServer (threading.Thread):
def __init__ (self, user, channel, server):
self.channel = channel
self.lastMessage = ""
self.user = user
self.s = server
threading.Thread.__init__ (self) #Pass to thread constructor
def start (self):
print "Welcome " + self.user + " type to send a message"
self.messageIn()
self.messageOut()
def messageOut (self):
while 1:
message = raw_input("Message: ");
s['message'] = message;
time.sleep(1)
def messageIn (self):
while 1:
print "Checking for new messages"
if s[self.channel]!=self.lastMessage:
print s[self.channel]
lastMessage = s[self.channel]
time.sleep(1)
chatServer(user, "channel1", server).start()
非常感谢您的时间
附:服务器是一个简单的类,获取/把消息它被赋予
PPS这不是功课,多为我的个人兴趣
感谢您的输入,我添加的新代码是否使用两个线程?这似乎也没有工作! – 2011-03-01 15:09:51