我正在使用Python创建聊天应用程序而不使用非标准库,并且在提示用户输入消息并通过消息时遇到了问题。
def printit():
threading.Timer(5.0, printit).start()
print("This is a test message!")
def prompt():
while True:
msg = input("Your Message: ")
def main():
thread_prompt = threading.Thread(target = prompt)
thread_prompt.start()
printit()
虽然我希望收到的所有消息都显示在与提示不同的行上,但是此刻发生了什么(例如,用户正在尝试键入并发送“ hello world”):
Your Message: hello worThis is a test message!
虽然我希望它像以下内容:
This is a test message!
Your Message: hello wor
在不使用外部库的情况下是否可以实现?另外,我还没有实现将消息发回的套接字/服务器,因此现在我正在使用threading.Timer
来模拟每5秒发送一次的消息。
答案 0 :(得分:1)
我认为您不可以按此特定顺序(测试消息后跟提示)轻松地执行所需的操作,但是可以轻松实现相反的顺序(提示后跟测试消息)。 排队,而不是打印测试消息,然后在用户按下Enter键时打印所有排队的消息。
queue = []
lock = threading.Lock()
def printit():
threading.Timer(5.0, printit).start()
lock.acquire()
queue.append("This is a test message!")
lock.release()
def prompt():
global queue
while True:
msg = input("Your Message: ")
lock.acquire()
while queue:
print(queue.pop())
lock.release()
def main():
thread_prompt = threading.Thread(target = prompt)
thread_prompt.start()
printit()