Eu sou muito novo em Python e programação multithread em geral. Basicamente, eu tenho um script que copiará arquivos para outro local. Gostaria que isso fosse colocado em outro encadeamento, para que eu possa ....
mostrar que o script ainda está em execução.
O problema que estou enfrentando é que, se os arquivos não puderem ser copiados, haverá uma exceção. Isso está ok se estiver sendo executado no thread principal; no entanto, ter o seguinte código não funciona:
try:
threadClass = TheThread(param1, param2, etc.)
threadClass.start() ##### **Exception takes place here**
except:
print "Caught an exception"
Na própria classe do thread, tentei relançar a exceção, mas ela não funciona. Vi pessoas aqui fazendo perguntas semelhantes, mas todas parecem estar fazendo algo mais específico do que estou tentando fazer (e não entendo bem as soluções oferecidas). Vi pessoas mencionarem o uso sys.exc_info()
, mas não sei onde nem como usá-lo.
Toda ajuda é bem-vinda!
EDIT: O código para a classe de thread está abaixo:
class TheThread(threading.Thread):
def __init__(self, sourceFolder, destFolder):
threading.Thread.__init__(self)
self.sourceFolder = sourceFolder
self.destFolder = destFolder
def run(self):
try:
shul.copytree(self.sourceFolder, self.destFolder)
except:
raise
TheThread
? Exemplo de código, talvez?