2012-05-31 199 views
3

我想在線程中設置計時器,並在我想要取消設置由gobject.timeout_add設置的計時器時終止該線程,這是一個很好的方法嗎?如何取消設置python gobject.timeout_add設置的計時器?線程?

基本上我想每180秒運行一個函數,但是我希望能夠隨時停止它(從另一個函數調用)。如何正確實現這一點?

我讀過,殺死一個線程是不好的!這樣簡單的任務有多糟糕?

回答

10

根據docs,當您撥打gobject.timeout_add時,它會返回一個int,該值對於該超時源是唯一的。然後在docs的更遠處,您會看到一個名爲gobject.source_remove的函數,該函數使用作爲參數的int,該函數將爲您刪除事件源,而不必混淆線程等。 例如:

integer_id = gobject.timeout_add(180000, callback_func) 
#And then somewhere else in your code... 
gobject.source_remove(integer_id) #This will stop the timeout_add from occurring! 

希望幫助!

+0

謝謝,會檢查它 – pahnin