我正在使用python。我需要在n秒后执行操作,而另一个条件为真。我不知道我是应该使用线程还是仅使用计时器:
start_time = time.time()
while shape == 4:
waited = time.time() - start_time
print start_time
if waited >= 2:
print "hello word"
break
形状总是变化的(我的手指在相机的镜头中的数量)
虽然它是4和2秒后(如shape==4
和shape==4
以及shape==4
很多时候)我需要做一个动作(这里我只使用打印)。我怎么能这样做?
答案 0 :(得分:0)
如果我正确地解释了你的问题,那么当你的条件成立时,你想要每隔 2秒发生一次事情,但是你可能还需要做其他的事情,所以块不理想。在这种情况下,您可以检查当前时间的秒值是否为2的倍数。根据循环中发生的其他操作,间隔不会完全 2秒,但相当漂亮关闭。
from datetime import datetime
while shape == 4:
if datetime.now().second % 2 == 0:
print "2 second action"
# do something else here, like checking the value of shape
答案 1 :(得分:0)
正如Mu建议的那样,您可以使用time.sleep
来暂停当前进程,但是您希望创建一个新线程,以便每五秒调用一次传递函数而不会阻塞主线程。
from threading import *
import time
def my_function():
print 'Running ...' # replace
class EventSchedule(Thread):
def __init__(self, function):
self.running = False
self.function = function
super(EventSchedule, self).__init__()
def start(self):
self.running = True
super(EventSchedule, self).start()
def run(self):
while self.running:
self.function() # call function
time.sleep(5) # wait 5 secs
def stop(self):
self.running = False
thread = EventSchedule(my_function) # pass function
thread.start() # start thread
# you can keep doing stuff here in the main
# program thread and the scheduled thread
# will continue simultaneously