📜  python 每 n 秒重复一次 - Python (1)

📅  最后修改于: 2023-12-03 15:34:12.888000             🧑  作者: Mango

Python每n秒重复一次

在编写Python脚本时,我们可能需要在程序运行期间每隔一定时间执行某个操作。这种情况下,我们可以使用Python的time和threading模块来实现。本文将介绍如何使用这两个模块来实现每n秒重复一次的操作。

time.sleep()方法

time.sleep()是Python的time模块提供的一个方法,可以让程序暂停一段时间。其语法如下:

time.sleep(n)

其中,n为暂停的时间,单位为秒。例如,如果希望程序暂停2秒钟,可以使用以下代码:

import time

print("开始")
time.sleep(2) # 暂停2秒钟
print("结束")

可见,我们使用了time模块的sleep方法来暂停2秒钟。执行以上代码,输出结果为:

开始
结束

在上面的代码中,使用time.sleep()方法实现了在程序中暂停一段时间的功能。但是,如果我们希望每隔n秒执行一次某个操作,应该怎么做呢?

使用threading.Timer重复执行任务

threading模块提供了一个Timer类,可以用来在一定时间之后执行某个函数。其语法如下:

t = Timer(n, function, args=None)

其中,n为等待的时间(秒),function为要执行的函数,args为传递给该函数的参数。

例如,如果希望每2秒执行一次某个函数,可以使用以下代码:

import threading

def hello():
    print("Hello, World!")
    
t = threading.Timer(2.0, hello)
t.start() # 开始执行任务

在以上代码中,我们定义了一个函数hello,然后使用Timer类定时执行该函数。Timer类会在指定的时间后调用hello函数,并且可以在每次执行之间保持一个给定的时间间隔。如果要取消定时器,可以使用:

t.cancel()

例如:

import threading

def hello():
    print("Hello, World!")
    t = threading.Timer(2.0, hello)
    t.start() # 等待2秒钟后继续执行
    
t = threading.Timer(2.0, hello)
t.start() # 开始执行任务

# 10秒钟后取消定时器
time.sleep(10)
t.cancel()

以上代码中,我们在hello函数内部调用了Timer类,以实现每2秒执行一次该函数并且在每次执行之间保持一个间隔。同时,设置了一个10秒钟的等待时间,在这个时间结束后取消该定时器。

完整代码

以下是一个完整的代码示例,用来实现每3秒执行一次某个函数:

import threading
import time

def hello():
    print("Hello, World!")
    t = threading.Timer(3.0, hello)
    t.start() # 等待3秒钟后继续执行
    
t = threading.Timer(3.0, hello)
t.start() # 开始执行任务

# 10秒钟后取消定时器
time.sleep(10)
t.cancel()
总结

本文介绍了如何使用Python的time和threading模块来实现每n秒重复一次的操作。具体来说,我们可以使用time模块的sleep()方法来暂停程序一段时间,或者使用threading模块的Timer类来重复执行某个函数。在实际编程过程中,我们可以根据具体的需求选择合适的方法来实现程序的定时操作。