在后台运行python代码的一部分

时间:2016-08-26 14:51:50

标签: python nohup

我正在编写一个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

1 个答案:

答案 0 :(得分:1)

1. threading.Thread可能会对您有所帮助,threading.Lock()会锁定您的数据。

我只是对它有一个想法,你可以使用global input data检查用户输入,两个线程将检查它,并确定谁锁定你的输出数据,主线程将打印它,还输入可以结束两个线程。 (可能会打破while循环)

2.await / async是异步IO的好方法,您可以使用send方法执行本地协同例程函数直到yield。 也许它可以做到这一点。

希望这会对你有所帮助。