我正在开发一个程序(实际上是一个聊天机器人,如果你愿意,你可以看到代码here),它始终在运行无限循环。
我使用asyncio
作为代码的一部分,所以我最初尝试创建另一个接收输入并检查命令的子例程。但是,它看起来并没有起作用。
我想要做的是能够在不中断执行的情况下发出程序命令,就像使用input()
一样。优选地,它将具有>
字符和线,其保持在屏幕的底部,其中程序输出出现在其上方并允许输入。
这可能与asyncio
有关吗?或者我是否需要研究多线程程序或其他内容?
编辑:有人认为我可能会使用ncurses
图形用户界面,其底部有一个输入字段,所有机器人的输出都在条目上方领域。这有可能吗?
答案 0 :(得分:1)
您应该可以使用asyncio,因为StdIn只是您可以选择的另一个流...
答案 1 :(得分:-1)
from threading import Thread
import shlex
def endless_job():
while True:
pass
job = Thread(target=endless_job)
job.start()
while True:
user_input = input('> ')
print(shlex.split(user_input))
shlex模块可以帮助您解析用户输入的命令行:)
如果需要将参数传递给endless_job函数,可以执行以下操作:
job = Thread(target=endless_job, args=(1,'a'), kwargs={'a': 1, 'b': 2})
其中args
和kwargs
分别代表位置和命名参数。