我正在编写一个python脚本,它为用户提供了两个选项。在一个选项中,用户输入用于在后台运行功能。另一方面,用户输入用于在前台运行功能。我如何实现这两个目标?我不想使用" nohup"命令在后台运行完整脚本。我只想在后台运行某个函数。
我还希望后台流程停止在用户的意愿上。
以下是我想要做的一小部分示例:
def display():
cnt = 1
a = []
if len(live_matches) == 0:
print "sorry, no live matches currently"
else:
for match in live_matches:
print str(cnt) + "." + match['mchdesc'] + "," + match['mnum']
a[cnt] = match
cnt = cnt + 1
choice = raw_input("Enter the match numbers for live updates separated by spaces")
for c in choice.split(' '):
update_matches.append(a[int(c)])
if len(update_matches) > 0:
#call some function and run in background
cnt = 1
for match in completed_matches:
print str(cnt) + "." + match['mchdesc'] + "," + match['mnum']
cnt = cnt + 1
choice = raw_input("enter the match number for scorecard")
#call some function again but run it in foreground
答案 0 :(得分:1)
1. threading.Thread
可能会对您有所帮助,threading.Lock()
会锁定您的数据。
我只是对它有一个想法,你可以使用global input data
检查用户输入,两个线程将检查它,并确定谁锁定你的输出数据,主线程将打印它,还输入可以结束两个线程。 (可能会打破while
循环)
2.await / async是异步IO的好方法,您可以使用send
方法执行本地协同例程函数直到yield
。
也许它可以做到这一点。
希望这会对你有所帮助。