我是python的新手,我想知道是否有一个函数会以特定的间隔重复某个事件,有点像
setInterval()
在Javascript中。我知道我可以使用
time.sleep()
在常规循环中,但我想知道是否有更好的方法。提前谢谢。
答案 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