在n秒python之后做一个动作

时间:2015-04-18 20:27:24

标签: python time timing

我正在使用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==4shape==4以及shape==4 很多时候)我需要做一个动作(这里我只使用打印)。我怎么能这样做?

2 个答案:

答案 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