我想每60秒在Python上执行一个函数,但是我不想同时被阻塞。
如何异步进行?
import threading
import time
def f():
print("hello world")
threading.Timer(3, f).start()
if __name__ == '__main__':
f()
time.sleep(20)
使用此代码,函数f在20秒time.time中每3秒执行一次。最后,它给出了一个错误,我认为这是因为threading.timer尚未被取消。
如何取消呢?
提前致谢!
您可以尝试threading.Timer类:http : //docs.python.org/library/threading.html#timer-
objects
。
import threading
def f(f_stop):
# do something here ...
if not f_stop.is_set():
# call f() again in 60 seconds
threading.Timer(60, f, [f_stop]).start()
f_stop = threading.Event()
# start calling f now and every 60 sec thereafter
f(f_stop)
# stop the thread when needed
#f_stop.set()
问题内容: 使用它可以在指定的时间启动功能: 但是,如果我想多次启动该功能怎么办?每次经过一个时间间隔,我都想执行该功能(假设每60秒执行一次)。 问题答案: 如果您不在乎内的代码是否可能花费比您的间隔更长的时间,请使用: 一遍又一遍地触发作为第一个参数传入的函数。 更好的方法是与函数一起使用: 这样可以保证在执行代码之前不会进行下一个调用。在本示例中,我将其用作函数参考。这是给函数命名并在其中调
如果我不控制代码每秒执行的次数,当我添加一行时,程序会发生变化,我必须再次调整常量。(谷歌翻译)我的代码失控了:
返回的数据结构如下: 如上述代码加了IF判断,但是在浏览器中还是报错。 怎么阻止?
问题内容: 我想永远每60秒重复执行一次Python中的函数(就像中的一样)。该代码将作为守护程序运行,实际上就像使用每分钟调用脚本一样,但是不需要用户设置。 在有关使用Python实现的的问题中,该解决方案似乎实际上只是将停留了x秒。我不需要这种高级功能,所以也许这样的事情会起作用 该代码是否存在任何可预见的问题? 问题答案: 使用模块,该模块实现了通用事件调度程序。
在额外收入部分,我想给添加某种值m,但是我不知道如何做。
问题内容: 我正在开发Django应用。我有一个API端点,如果需要,它必须执行必须重复几次的功能(直到满足特定条件为止)。我现在如何处理- 虽然我知道这是一种可怕的方法,并且我不应该阻塞2秒钟,但是我不知道该如何解决。 等待4秒后,此方法起作用。但是我想要使循环在后台运行并在some_fn返回True时停止的东西。(此外,可以肯定some_fn将返回True) 编辑- 阅读Oz123的响应给了我