📅  最后修改于: 2023-12-03 15:41:00.563000             🧑  作者: Mango
在 JavaScript 中,我们经常使用 setInterval
函数来重复执行代码。但是,Python 中没有这个函数,那么怎么办呢?下面介绍几种在 Python 中实现 setInterval
的方法。
import threading
def setInterval(func, sec):
def func_wrapper():
setInterval(func, sec)
func()
t = threading.Timer(sec, func_wrapper)
t.start()
return t
这个方法使用了 Python 自带的 threading.Timer
类。它会在指定的秒数后执行一个函数。这个函数又会调用 setInterval
,从而实现了重复执行。
使用方法如下:
def my_func():
print("Hello, world!")
interval = setInterval(my_func, 2)
上面的代码会每两秒输出一次 Hello, world!
,并且会在一个新的线程中执行。
import asyncio
def setInterval(func, sec):
async def func_wrapper():
while True:
await asyncio.sleep(sec)
func()
asyncio.ensure_future(func_wrapper())
这个方法使用了 Python 自带的 asyncio.sleep
函数。它会在指定秒数后暂停程序的执行,然后再继续执行。这个函数会像 setInterval
一样无限地循环调用自己。
使用方法如下:
async def my_func():
print("Hello, world!")
setInterval(my_func, 2)
asyncio.get_event_loop().run_forever()
上面的代码会每两秒输出一次 Hello, world!
,并且会在一个事件循环中执行。需要注意的是,这个写法需要在 Python 3.4 及以上版本才能使用。
以上是两种在 Python 中实现 setInterval
的方法。它们各有优缺点,选择哪种方法取决于你的具体需求。在使用 setInterval
的时候需要注意内存泄漏的问题,及时清理不再需要的计时器对象,避免资源浪费。