首页 > 解决方案 > 如何将此超时和间隔转换为使用毫秒

问题描述

class Time:
    _timers = {"cancel": []}
    def __init__(self, int=None, func=None, *args, **kw):
        self.int = int
        self.func = func
        self.args = args
        self.kwargs = kw
        self.id = uuid.uuid4().hex
        self.mode = None
        self.time = time.time()
    
    def interval(self):
        self.mode = "interval"
        self._add()
    
    def timeout(self):
        self.mode = "timeout"
        self._add()
    
    def cancel(self):
        do = True
        for timer in self._timers['cancel']:
            if timer.id == self.id:
                do = False
        if do:
            self._timers['cancel'].append(self)
    
    def _add(self):
        self._timers[self.id] = self
    
    def _cancel(self, id=None):
        if id in self._timers:
            del self._timers[id]
        else:
            if self.id in self._timers:
                del self._timers[self.id]
    
    def runall(self):
        for id, timer_object in iter(self._timers.items()):
            if id != "cancel":
                now = (time.time() - timer_object.time) * 1000
                if now == timer_object.int:
                    timer_object.func(*timer_object.args, **timer_object.kwargs)
                    if timer_object.mode == "interval":
                        timer_object.time = time.time_ns()
                    else:
                        timer_object.cancel()
                
        for timer in self._timers['cancel']:
            timer._cancel()
        self._timers['cancel'] = []

timer = Time(
    1000, #milliseconds
    print, "1000 miliseconds"
)

它一直有效,直到添加了 time.sleep 是否有办法在睡眠完成后添加丢失的时间。我需要找到一种不同的方式来让循环休眠吗?当你不知道睡眠时,找到一种方法来计算错过的时间会很棒

标签: python-3.x

解决方案


推荐阅读