python 1特定线程在遇到异常时不返回

时间:2017-07-24 17:46:47

标签: python

我在我的主脚本中有这个代码,用于从数组中启动线程。我在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)

我甚至添加了一个"返回"在异常中的最后一个打印行之后,当我在最后一个打印行之后调试或者如果我在那里返回时,没有任何反应,这意味着走线看起来没问题,但它永远不会返回到我的主代码退出程序/脚本。我在控制台上看到了打印消息,但是我的代码应该用另一条消息退出主程序。

0 个答案:

没有答案