从python计时器中获取剩余时间

问题描述 投票:1回答:1

寻找一种简单的方法来从python计时器获取剩余时间和经过时间。当前拥有(基于github上的threading.Timer和上一篇文章):

import threading
import time

class CountdownTimer(threading.Thread):
    def __init__(self, interval, function, args=None, kwargs=None):
        threading.Thread.__init__(self)
        self.interval = interval
        self.function = function
        self.args = args if args is not None else []
        self.kwargs = kwargs if kwargs is not None else {}
        self.finished = Event()
        self.started_at = None

    def cancel(self):
        self.finished.set()

    def elapsed(self):
        return time.time() - self.started_at

    def remaining(self):
        return self.interval - self.elapsed()

    def run(self):
        self.started_at = time.time()
        self.finished.wait(self.interval)
        if not self.finished.is_set():
            self.function(*self.args, **self.kwargs)
        self.finished.set()

这看起来是否合理有效(不需要超出当前线程技术的精度)?

python timer python-multithreading elapsedtime
1个回答
0
投票

perf_counter()

import time

start = time.perf_counter()
time.sleep(2)
finish = time.perf_counter()
print(f'Finished in {round(finish-start, 2)} second(s)')

perf_counter()的优点:

  1. [perf_counter()将给您比time.clock()函数更精确的值。

  2. 从Python3.8开始,time.clock()函数将被删除,并且将使用perf_counter

  3. 我们可以计算浮点数和时间的整数值(以秒和纳秒为单位。

© www.soinside.com 2019 - 2024. All rights reserved.