推迟python中的函数

发布于 2021-01-29 17:14:55

在JavaScript中,我习惯于能够在以后调用要执行的函数,像这样

function foo() {
    alert('bar');
}

setTimeout(foo, 1000);

这不会阻止其他代码的执行。

我不知道如何在Python中实现类似的功能。我可以睡

import time
def foo():
    print('bar')

time.sleep(1)
foo()

但这会阻止其他代码的执行。(实际上,就我而言,阻塞Python本身并不是问题,但我无法对该方法进行单元测试。)

我知道线程是为异步执行而设计的,但是我想知道是否有更简单,相似setTimeoutsetInterval存在的东西。

关注者
0
被浏览
39
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您需要模块中的Timer对象threading

    from threading import Timer
    from time import sleep
    
    def foo():
        print "timer went off!"
    t = Timer(4, foo)
    t.start()
    for i in range(11):
        print i
        sleep(.5)
    

    如果您想重复一遍,这是一个简单的解决方案:与其使用Timer,而不是使用,Thread而是将其传递给一个起作用的函数,如下所示:

    def call_delay(delay, repetitions, func, *args, **kwargs):             
        for i in range(repetitions):    
            sleep(delay)
            func(*args, *kwargs)
    

    这不会做无限循环,因为如果执行不正确,可能会导致线程死亡并导致其他不愉快的行为。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看