我有一个聊天机器人,它在等待用户输入,但也有一个屏幕,用户可以在其中单击按钮来选择一个选项。在我的python代码上,我可以通过回调获取选择的选项,并且我还具有一个无限循环,在聊天机器人响应之后,该循环等待用户输入。我想问用户一个问题,但允许他们输入答案或从屏幕上选择一个选项。所以我想要这样的东西:
inp = ""
while(True):
answer, end = get_answer(inp)
print('CHATBOT: '+ answer)
if end = break
if input by user:
inp = input by user
elif callback:
inp = callback value
当然,调用权或来自用户的输入可能需要花费一些时间,因此不希望使用计时器。我该怎么办?
答案 0 :(得分:1)
您可以将线程与消息队列一起使用:
from threading import Thread
from Queue import Queue
from datetime import datetime
import time
def chatbot(queue):
while True:
queue.put('CHATBOT: The time is now %s' % datetime.now())
time.sleep(5)
def user_input(queue):
while True:
queue.put('USER: ' + raw_input())
queue = Queue()
chatbot_thread = Thread(target=chatbot, args=(queue,))
input_thread = Thread(target=user_input, args=(queue,))
chatbot_thread.start()
input_thread.start()
while True:
print(queue.get())
示例输入/输出:
CHATBOT: The time is now 2019-03-01 07:42:43.975000
hello world
USER: hello world
CHATBOT: The time is now 2019-03-01 07:42:48.976000
CHATBOT: The time is now 2019-03-01 07:42:53.977000
foo bar
USER: foo bar
CHATBOT: The time is now 2019-03-01 07:42:58.977000