当前,我正在尝试使用适当的线程执行一堆脚本。
它们的排序如下: 主线程(运行Flask应用) -Analysis Thread(运行调用所有所需脚本的分析脚本) -3个不同的函数作为线程执行(分为3部分,因此分析运行更快)
我的问题是我在分析线程中有一个全局变量,以便能够在调用之后确定线程是否在运行。第一次启动并运行正常。然后,您可以随意调用该端点,而不会执行任何操作,因为我返回423来表明该线程(分析)仍在运行。完成所有脚本后,带有analysis_thread.isAlive()
的if子句应按预期返回false,并尝试再次以analysis_thread.start()
开始分析,但这不起作用,它引发异常,表明线程已处于活动状态并且不能启动两次。
有没有一种方法可以启动脚本,并且在脚本运行时返回另一个代码,但是完成后我可以再次启动它?
感谢您的阅读和所有帮助
Christoph
答案 0 :(得分:0)
现在希望可行的解决方案是永远不要停止线程,而要等待它。
在分析脚本中,我有一个全局变量,该变量指示默认情况下将其设置为False的状态。
在函数内部运行了两阵子:
while True:
while not thread_status:
time.sleep(30)
execution of the other scripts.
thread_status = False # to ensure the execution runs just once.
然后我将Controller类中的标志设置为True,以便它开始执行