我猜您有两个(或更多)程序要重复运行,并允许在用户选择新条件时更改它们。我会利用 Python 将函数作为对象,所以像这样:
def f1():
# do something
def f2():
# do something else
func_to_run = {"user_input1": f1, "user_input2": f2}
while True:
user_input = get_any_new_input() # however you want to get your user input
func_to_run[user_input]()
编辑:正如 Keith 在评论中提到的, get_any_new_input 需要是非阻塞的。我会通过线程来做到这一点。Web 界面应位于与循环不同的线程上,但共享 Web 界面将设置的控制对象。如果您有可用的表,这可能是数据库中的表。如果您使用自己的锁,它可能看起来像这样:
L = threading.Lock() # Shared by web ui
user_response = 'data set by web ui'
last_input = 'user_input1'
def get_any_new_input(L, last_input, user_response):
if L.acquire([False]):
last_input = user_response
return last_input