我在我的主脚本中有这个代码,用于从数组中启动线程。我在python脚本中有不同的代码,可以使用不同的线程。有一个特殊的代码,我不明白为什么当我遇到异常时,它似乎挂起了我的整个程序/脚本...
import threading #(of course)
def start_threads(threads)
for t in threads:
t.start()
for t in threads:
t.join()
return
threads = []
thread1 = threading.Thread(target=start_test1,args=(self,))
thread1.daemon = True
threads.append(thread1)
thread2 = threading.Thread(target=start_test2,args=(self,))
thread2.daemon = True
threads.append(thread2)
start_threads(threads)
因此,当遇到任何异常时,thread1的代码永远不会导致我的主程序/脚本停止。由于某种原因,thread2中的代码确实如此。我正在尝试/除了代码中的任何一个线程,所以我不知道为什么thread2不会正常返回。
thread2中的代码类似于以下内容:
try:
print('starting thread2')
some_function(options, parameters, etc)
print('thread2 complete')
except Exception as e:
print('error running thread2')
print('msg: %s' % e)
我甚至添加了一个"返回"在异常中的最后一个打印行之后,当我在最后一个打印行之后调试或者如果我在那里返回时,没有任何反应,这意味着走线看起来没问题,但它永远不会返回到我的主代码退出程序/脚本。我在控制台上看到了打印消息,但是我的代码应该用另一条消息退出主程序。