我有一个 Python 聊天系统,它使用 1 个线程进行用户输入,使用另一个线程进行消息接收和打印。问题是:如果我在接受用户输入的同时收到一条消息,则消息中的文本最终会出现在输入行而不是它自己的单独行上。我将如何处理这个?我的代码的简短版本:def receive(cl,buffer): msg = str(cl.recv(1024).decode()) print(msg)_thread.start_new_thread(receive,(client,1024,))while True: msg = input("message:") send(message)例如:如果我在控制台中编写“hello server”时从服务器收到“hello world”,它看起来像这样“你好世界消息:你好服务器”
2 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
理想情况下,输入和输出使用两个不同的窗口。考虑现有的聊天应用程序,其中有一个窗口来键入您的消息,与显示您的消息和其他用户的消息的窗口分开。否则,您可以在输入另一条消息时输入。
或者,使用 athreading.Lock()
来序列化输出。只有持有锁的线程才能输出。不幸的是,如果您有:
with lock: msg = input('message: ')
在您完成输入消息之前,没有其他线程可以打印任何内容。使用单独的窗口进行输入和输出的另一个原因。
添加回答
举报
0/150
提交
取消