gpt4 book ai didi

python - 如何在 Python 中的特定时间运行某个函数?

转载 作者:行者123 更新时间:2023-11-28 23:06:18 24 4
gpt4 key购买 nike

例如,我有函数 do_something() 并且我希望它运行正好 1 秒(而不是 .923 秒。它不会这样做。但是 0.999 是可以接受的。)

但是,do_something 必须准确运行 1 秒,这一点非常非常重要。我在考虑使用 UNIX 时间戳并计算秒数。但我真的很想知道 Python 是否有办法以更美观的方式做到这一点......

do_something() 函数是长时间运行的,必须在刚好一秒后中断。

最佳答案

我从评论中了解到这里某处有一个 while 循环。这是一个子类 Thread,基于 threading 模块中的 _Timer 的源代码。我知道你说过你决定不使用线程,但这只是一个定时器控制线程; do_something 在主线程中执行。所以这应该是干净的。 (如果我错了,请纠正我!):

from threading import Thread, Event

class BoolTimer(Thread):
"""A boolean value that toggles after a specified number of seconds:

bt = BoolTimer(30.0, False)
bt.start()
bt.cancel() # prevent the booltimer from toggling if it is still waiting
"""

def __init__(self, interval, initial_state=True):
Thread.__init__(self)
self.interval = interval
self.state = initial_state
self.finished = Event()

def __nonzero__(self):
return bool(self.state)

def cancel(self):
"""Stop BoolTimer if it hasn't toggled yet"""
self.finished.set()

def run(self):
self.finished.wait(self.interval)
if not self.finished.is_set():
self.state = not self.state
self.finished.set()

你可以像这样使用它。

import time

def do_something():
running = BoolTimer(1.0)
running.start()
while running:
print "running" # Do something more useful here.
time.sleep(0.05) # Do it more or less often.
if not running: # If you want to interrupt the loop,
print "broke!" # add breakpoints.
break # You could even put this in a
time.sleep(0.05) # try, finally block.

do_something()

关于python - 如何在 Python 中的特定时间运行某个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com