![](/img/trans.png)
[英]How to stop a while loop with a user input without interrupting the program?
[英]Get user input without interrupting program execution
我正在研究一个程序(实际上是一个聊天机器人,你可以在这里查看代码),它始终有无限循环运行。
我使用asyncio
作为代码的一部分,所以我最初尝试创建另一个接收输入并检查命令的子例程。 但是,它似乎并没有起作用。
我想要做的是能够发出程序命令而不会像使用input()
那样中断执行。 优选地,它将具有>
字符和线,其保持在屏幕的底部,其中程序输出出现在其上方并允许输入。
这可能与asyncio
还是我需要查看多线程我的程序或其他什么?
编辑 :我以为我可能会使用一个ncurses
GUI-thing,它在底部有一个输入字段,在输入字段上面有所有bot的输出。 这可能吗?
您应该能够使用asyncio,因为StdIn只是您可以选择的另一个流...
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
代表位置和命名参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.