2012-05-31 2 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

Смежные вопросы