Python 在一段时间内重复一个函数

Python 在一段时间内重复一个函数,python,function,timing,raspberry-pi,Python,Function,Timing,Raspberry Pi,在Python3中,如何重复一个函数10秒。在这种情况下,函数在特定时间内将raspberry pi的输出设置为高和低。这需要在发生之前的指定时间内发生。请尝试: def run_wrapper(sec): starttime = datetime.datetime.now() endtime = None while True: f() endtime = datetime.datetime.now() if (endti

在Python3中,如何重复一个函数10秒。在这种情况下,函数在特定时间内将raspberry pi的输出设置为高和低。这需要在发生之前的指定时间内发生。

请尝试:

def run_wrapper(sec):
    starttime = datetime.datetime.now()
    endtime = None
    while True:
        f()
        endtime = datetime.datetime.now()
        if (endtime - starttime).total_seconds() >= sec:
            break
    print('Ran for %s seconds' % (endtime - starttime).total_seconds())

其中
f
是要调用的函数。请记住,这不会运行秒。如果未超过
sec
seconds,则调用该函数。例如,如果您的函数需要30秒,并且您指定了31秒,那么您的函数将被调用两次,总共60秒。

如果您不需要在整个时间段内连续重新调用函数,那么您可以执行以下操作:

import time
f()
time.sleep(sec)
g()
这里的
f
是一个函数,它导致一些结果被
g
撤消;由于
g
sec
秒之后才会调用,因此
f
的结果将在您需要的时间内保持有效

编辑:如果
f
需要花费大量的时间,并且您需要更精确的时间,请尝试以下操作:

import time
before_f = time.clock()
f()
after_f = time.clock()
time.sleep(sec-(after_f-before_f))
g()

这将在函数运行期间最大限度地提高CPU的利用率,而不仅仅是重复调用函数。是的,我只是觉得值得一提。如果需要,他们可以添加
time.sleep()
来稍微降低速度,但这意味着您的函数在10秒内不会运行。我相信OP希望它能连续运行10秒,这取决于具体的要求,我想,也许每秒运行一次10秒就可以了。不管怎样,这都是一个很好的解决方案,他们可以根据自己的具体需求进行定制