用户输入不断运行Python脚本

时间:2018-01-15 21:37:13

标签: python command-line continuous

我想编写一个python命令行脚本,它将接受用户输入,同时以固定间隔运行另一个函数或脚本。我在下面写了一些伪代码来说明我的目标:

def main():
    threading.Timer(1.0, function_to_run_in_background).start()

    while True:
        command = raw_input("Enter a command >>")

        if command.lower() == "quit":
            break

def function_to_run_in_background():
    while True:
        print "HI"
        time.sleep(2.0)

if __name__ == "__main__":
    main()

我试图在这些方面做一些工作,但通常会发生的事情是function_to_run_in_background只运行一次,我希望它在指定的时间间隔内连续运行,而程序的主线程接受用户输入。这接近我的想法还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

以下基本上是我要找的东西。 @Evert以及How to use threading to get user input realtime while main still running in python的答案得到了帮助:

import threading
import time
import sys

def background():
    while True:
        time.sleep(3)
        print 'disarm me by typing disarm'


def save_state():
    print 'Saving current state...\nQuitting Plutus. Goodbye!'

# now threading1 runs regardless of user input
threading1 = threading.Thread(target=background)
threading1.daemon = True
threading1.start()

while True:
    if raw_input().lower() == 'quit':
        save_state()
        sys.exit()
    else:
        print 'not disarmed'`