我對Python和多線程編程一般都很陌生。基本上,我有一個將文件複製到另一個位置的腳本。我希望將它放置在另一個線程中,以便我可以輸出....
來指示腳本仍在運行。在Python中的調用者線程中捕獲一個線程的異常
我遇到的問題是,如果文件不能被複制,它會引發異常。如果在主線程中運行,這是可以的;然而,具有下面的代碼不起作用:
try:
threadClass = TheThread(param1, param2, etc.)
threadClass.start() ##### **Exception takes place here**
except:
print "Caught an exception"
在線程類本身,我試圖重新拋出異常,但它不工作。我看到這裏的人問過類似的問題,但他們似乎都在做一些比我想要做的更具體的事情(並且我不太瞭解提供的解決方案)。我看到有人提到sys.exc_info()
的用法,但我不知道在哪裏或如何使用它。
所有幫助非常感謝!
編輯:爲線程類的代碼如下:
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'內發生了什麼?代碼示例或許? – jathanism 2010-05-13 18:43:01
當然。我會編輯上面的回覆以包含一些細節。 – Phanto 2010-05-13 18:44:45
你有沒有考慮切換它,所以主線程是一些東西,進度指示器在產生的線程中? – 2010-05-13 19:00:18