📅  最后修改于: 2023-12-03 14:49:59.529000             🧑  作者: Mango
有时候,我们需要实现一个在一定时间之后才执行的操作。比如,在一个 Python 程序中,我们需要在 5 分钟后停止一个 while 循环。那么,该如何实现呢?
下面,我们将介绍 3 种常见的在 Python 中延时执行的方法。
time.sleep()
在 Python 中,可以通过 time.sleep()
方法来实现延时功能。该方法可以让程序执行暂停一段时间,单位是秒。例如,要让程序延时 5 秒,可以这样写:
import time
time.sleep(5)
这样,程序会在执行到 time.sleep(5)
时暂停 5 秒,然后再继续执行后面的代码。
如果要在 5 分钟之后停止一个 while 循环,可以这样写:
import time
start_time = time.time()
while True:
# 执行代码
if time.time() - start_time > 5 * 60:
break
这里,我们先记录一下程序的开始时间,然后在每次循环之前判断当前时间是否已经过了 5 分钟。如果是,则退出循环。如果不是,则继续执行后面的代码。
threading.Timer()
在 Python 中,还可以使用 threading.Timer()
方法来实现延时功能。该方法可以在指定的时间之后自动执行一个函数。例如,要让程序在 5 分钟后停止一个 while 循环,可以这样写:
import threading
def stop_loop():
# 停止 while 循环的代码
t = threading.Timer(5 * 60, stop_loop)
t.start()
这样,程序会在 5 分钟后自动执行 stop_loop()
函数,该函数中可以编写停止 while 循环的代码。
asyncio.sleep()
在 Python 3.4 及以上版本中,还可以使用 asyncio.sleep()
方法来实现延时功能。该方法可以在异步程序中挂起当前协程一段时间,并在指定的时间之后自动恢复协程的执行。例如,要让程序在 5 分钟后停止一个 while 循环,可以这样写:
import asyncio
async def main():
while True:
# 执行代码
# 延时 5 分钟
await asyncio.sleep(5 * 60)
asyncio.run(main())
这里,我们使用了异步方式让程序始终保持运行状态。在 while 循环中,我们调用 asyncio.sleep()
方法来实现延时功能。该方法会让当前协程挂起一段时间,并在指定的时间之后自动恢复协程的执行。这样,程序就会在每隔 5 分钟执行一次 while 循环,并且可以在需要的时候结束程序的运行。
以上就是 3 种常见的在 Python 中延时执行的方法。根据不同的使用场景,你可以灵活选择。在实际开发中,还有很多其他的延时方法,包括使用 sched
、asyncio.ensure_future()
等。如果你想了解更多关于 Python 中的延时执行技巧,可以继续阅读官方文档或参考其他优秀的教程资料。