multithreading - 在 python 中,多线程延迟功能

  显示原文与译文双语对照的内容

在JavaScript中,我习惯于能够在以后调用函数,如下所示


function foo() {


 alert('bar');


}



setTimeout(foo, 1000);



这不执行其他代码的执行。

我不知道如何在 python 中实现类似的东西。 我可以用睡眠


import time


def foo():


 print('bar')



time.sleep(1)


foo()



但这将执行其他代码的执行。 ( 实际上在我的情况下阻塞 python 本身不是问题,但是我不能对方法进行 单元测试 。)

我知道线程是为out-of-sync执行而设计的,但是我想知道是否存在与 setTimeout 或者 setInterval 相似的。

时间: 原作者:

你希望从 threading 模块中获取一个 Timer 对象。


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)



如果你想重复,下面是一个简单的解决方案: 使用 Thread,而不是使用 Timer,而是传递一个类似于这样的函数:


def call_delay(delay, repetitions, func, *args, **kwargs): 


 for i in range(repetitions): 


 sleep(delay)


 func(*args, *kwargs)



这不会做无限循环,因为这会导致一个不会死死的线程,如果没有正确的行为。 更复杂的方法可能使用 Event -based方法,比如这样的

原作者:
...