如何在python中设置一个以一定间隔重复的循环?

时间:2015-11-02 08:58:24

标签: python loops time timer

我是python的新手,我想知道是否有一个函数会以特定的间隔重复某个事件,有点像

setInterval()

在Javascript中。我知道我可以使用

time.sleep()

在常规循环中,但我想知道是否有更好的方法。提前谢谢。

2 个答案:

答案 0 :(得分:1)

from threading import Timer, Thread

def call_at_interval(time, callback, args):
    while True:
        timer = Timer(time, callback, args=args)
        timer.start()
        timer.join()

def setInterval(time, callback, *args):
    Thread(target=call_at_interval, args=(time, callback, args)).start()

需要使用这两个函数来避免setInterval阻塞调用。

您可以像这样使用它:

def hello(word):
    print("hello", word)

setInterval(10, hello, 'world!')

它将每十秒打印一次'hello world!'

答案 1 :(得分:1)

以下是@Mathias Ettinger的简化版

因为var vm = { val: ko.observable('Some value'), }; ko.applyBindings(vm, bound); $('#changeText').on('click', function() { $('#textInput').val('ABC'); $('#textInput').trigger('change'); });已经在一个单独的线程中运行,所以不需要使用<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="bound" name="bound"> <input type="text" data-bind="value: val" id="textInput"/> <div> The observable is: <span data-bind="text: val"/> </div> </div> <input type="button" value="Click to change" id="changeText"/>,因为它会产生另一个线程。

只需睡觉并直接调用回调。

call_at_interval