Python时间延迟

ogq8wdun  于 2023-03-16  发布在  Python
关注(0)|答案(5)|浏览(158)

我想知道如何在一段时间后调用一个函数。我试过time.sleep(),但这会暂停整个脚本。我想让脚本继续运行,但在???秒后调用一个函数并同时运行另一个脚本

tzcvj98z

tzcvj98z1#

看一下threading.Timer,它在一个新线程中运行您的函数。

from threading import Timer

def hello():
    print "hello, world"

t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed
im9ewurl

im9ewurl2#

如果你想让一个函数在一段时间后被调用而不停止你的脚本,你本质上是在处理线程代码;如果你想设置一个函数被调用而不担心它,你要么显式地使用多线程--像em Mark Byers的answr,要么使用一个有主循环的编码框架来处理函数调度--像twisted、qt、gtk、pyglet、还有很多其他的,任何一个都需要你重写你的代码,这样它就可以从框架的主循环中工作。
要么就是这样,要么就是编写一些主循环,从事件中检查你自己的代码--总而言之,如果你想要的只是单个函数调用,threading.Timer就是一种方法。如果你想使用这些定时调用来实际循环程序,就像通常使用javascript的setTimeout所做的那样,最好选择上面列出的编码框架之一,然后重构代码以利用它。

wwtsj6pe

wwtsj6pe3#

如果不需要非块特性,只需使用time.sleep(5),它将在任何地方工作,并保存您的生命。

oxcyiej7

oxcyiej74#

好吧,不是一个完美的解决方案,但我用了以下,因为我的工作很简单:

counter_time = 0
while True:
   time.sleep(0.1)
   counter_time = counter_time + 0.1

现在你有时间在特定的时间使用if来做一些事情。我的代码在while循环中运行,所以这对我很有效。你可以做同样的事情,或者使用线程来运行这个无限循环和你自己的代码。

rqqzpn5f

rqqzpn5f5#

最简单的方法是使用我创建的函数setTimeout:
输入异步

执行异步导入的函数

异步定义设置超时(fn,时间):等待异步睡眠(时间)fn()
def函数():打印(“hi”)
asyncio.run设置超时(函数,1))
我目前正在尝试处理setInterval,比如重复超时,但是我得到了一个错误。

相关问题