我正在用Python编写一个个人助理程序。目前,我正在规划所有要做的事情,但遇到了一个无法解决的问题。
我将运行一个主脚本,每3秒检查一次用户是否说了'Hello'
。如果用户说了,那么它应该开始运行另一个脚本/函数,并停止当前的脚本。任务完成后,它应该再次开始运行主脚本(我将为每个任务使用不同的脚本以使代码更清晰)。我曾考虑过使用while循环,但不确定这是否是最佳选择。
回答:
select
系统调用是一种非常高效的方法,可以在文件准备好读取之前等待,然后再执行操作:
import selectimport syswhile True: reads, _, _ = select.select([sys.stdin], [], [], 3) if reads: line = reads[0].readline() if line.strip().lower() == "hello": # 执行某个操作 print("hi")
一旦读取到hello
,并执行了你的函数或进程,程序将返回到读取stdin
的状态。
请注意,这适用于POSIX系统,但不适用于Windows(除了套接字之外)。