我想在线程中设置计时器并在我想取消设置gobject.timeout_add设置的计时器时终止该线程,这是一个很好的方法吗?
基本上我想每180秒运行一个函数,但我希望能够随时停止它(从另一个函数调用)。如何正确实现这一目标?
我已经读过杀死一个帖子很糟糕!对于像这样的简单任务有多糟糕?
答案 0 :(得分:12)
根据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!
希望有所帮助!