擅长:python、mysql、java
<p>启动计时器后将调用cancel方法:</p>
<pre><code>import time
import threading
def hello():
print "hello, world"
time.sleep(2)
t = threading.Timer(3.0, hello)
t.start()
var = 'something'
if var == 'something':
t.cancel()
</code></pre>
<p>您可以考虑在<a href="http://docs.python.org/3.3/library/threading.html?highlight=threading#threading.Thread" rel="noreferrer"><em>Thread</em></a>上使用while循环,而不是使用<em>计时器</em><br/>
下面是一个从尼古拉斯·格拉德沃尔的<a href="https://stackoverflow.com/a/4153314/1217270"><strong>answer</strong></a>到另一个问题的例子:</p>
<pre><code>import threading
import time
class TimerClass(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.event = threading.Event()
self.count = 10
def run(self):
while self.count > 0 and not self.event.is_set():
print self.count
self.count -= 1
self.event.wait(1)
def stop(self):
self.event.set()
tmr = TimerClass()
tmr.start()
time.sleep(3)
tmr.stop()
</code></pre>