python类中如何毫秒调用

python类中如何毫秒调用

作者:Elara发布时间:2026-01-12阅读时长:0 分钟阅读次数:20

用户关注问题

Q
如何在Python类中实现毫秒级别的时间调用?

我想在Python的类方法中获取带有毫秒的时间戳,该如何实现?

A

使用time模块实现毫秒时间调用

可以使用Python内置的time模块中的time.time()函数,该函数返回自Unix纪元以来的浮点秒数。通过乘以1000并转换为整数,即可得到毫秒级时间戳。例如:

import time

class Timer:
    def get_milliseconds(self):
        return int(time.time() * 1000)

# 使用示例
t = Timer()
print(t.get_milliseconds())
Q
有没有更精确的方式在Python类中获取当前时间的毫秒部分?

除了time.time(),还有没有别的方法在类中获取当前时间,并且带有毫秒精度?

A

使用datetime模块获取带毫秒的当前时间

datetime模块的datetime.now()方法可以获取当前时间,其结果包含微秒级别的精度。通过格式化输出,可以显式显示毫秒部分。例如:

from datetime import datetime

class Timer:
    def get_current_time_with_ms(self):
        now = datetime.now()
        millis = int(now.microsecond / 1000)
        return f"{now.strftime('%Y-%m-%d %H:%M:%S')}.{millis:03d}"

# 示例调用
t = Timer()
print(t.get_current_time_with_ms())
Q
在Python类中如何实现定时毫秒调用某个函数?

我想在一个Python类里定时以毫秒为单位调用某个方法,有合适的实现方案吗?

A

利用线程和time.sleep实现毫秒级定时调用

Python标准库中的threading模块可以配合time.sleep实现定时调用。sleep函数支持浮点秒数参数,可以间隔0.001秒即1毫秒调用某个函数。示例如下:

import threading
import time

class RepeatedTimer:
    def __init__(self, interval_ms, function):
        self.interval = interval_ms / 1000  # 转换为秒
        self.function = function
        self.thread = threading.Thread(target=self._run)
        self.running = False

    def _run(self):
        while self.running:
            start_time = time.time()
            self.function()
            elapsed = time.time() - start_time
            time.sleep(max(0, self.interval - elapsed))

    def start(self):
        if not self.running:
            self.running = True
            self.thread.start()

    def stop(self):
        self.running = False
        self.thread.join()

# 使用示例
def task():
    print("每毫秒调用一次")

rt = RepeatedTimer(1, task)  # 每1毫秒调用一次
rt.start()

# 运行一段时间后停止
import time
 time.sleep(0.01)  # 让它运行10ms
rt.stop()