У меня есть набор задач, которые нужно выполнить параллельно, но в конце их мне нужно знать, вызвало ли какое-либо из потоков исключение. Мне не нужно обрабатывать исключение напрямую, мне просто нужно знать, не сработал ли один из потоков с исключением, поэтому я могу чисто завершить script
Вот простой пример:
#!/usr/bin/python
from time import sleep
from threading import Thread
def func(a):
for i in range(0,5):
print a
sleep(1)
def func_ex():
sleep(2)
raise Exception("Blah")
x = [Thread(target=func, args=("T1",)), Thread(target=func, args=("T2",)), Thread(target=func_ex, args=())]
print "Starting"
for t in x:
t.start()
print "Joining"
for t in x:
t.join()
print "End"
Перед "Конец" я хочу выполнить итерацию по потокам, посмотреть, не удалось ли сбой, а затем решить, могу ли я продолжить работу с script, или если мне нужно выйти с этой точки.
Мне не нужно перехватывать исключение или останавливать другие потоки, мне просто нужно знать в конце, если какой-либо сбой.