从backround_thread重新启动python脚本

时间:2015-08-05 12:22:43

标签: python python-2.7 background-thread

我一直在寻找正确的代码,但我没有运气。

我有下面的python脚本与后台线程和主程序..我想重新启动脚本一旦后台线程遇到一个条件。希望你能帮助我。 TIA

使用此脚本,background_stuff和“main”同时运行。

def background_stuff():
    while True:
        if condition == 'True':
            ### restart the script
t = Thread(target=background_stuff)
t.start()
### main
if __name__ == '__main__':
    while True:
          #do something

1 个答案:

答案 0 :(得分:2)

你可以像这样重构你的剧本吗?

def main():
    t = Thread(target=background_stuff)
    t.start()
    while True:
        #do something

def background_stuff():
    while True:
        if condition == 'True':
            ### restart the script
#t = Thread(target=background_stuff)
#t.start()
### main
if __name__ == '__main__':
    main()

现在调用main应该创建一个新的线程来运行后台东西并且脚本基本上重新启动。唯一的问题是状态未重置。如果您需要重置状态,那么您可以使用以下命令从脚本中从头开始运行脚本:

os.system("yourScript.py -yourargs")

我不认为这是最好的做法......

无论您最终使用哪种解决方案,您仍然需要终止旧的主循环。这可以通过在“重新启动脚本”时设置一些标志来完成,然后让主循环定期检查该标志并在设置标志后进行受控关闭,或者可以在另一个线程中运行主循环。您可以全局访问或从其他线程访问,然后终止它。请记住,通常不建议强行关闭线程。