在x秒后在两个函数之间切换

  • 本文关键字:两个 函数 之间 python
  • 更新时间 :
  • 英文 :


我有两个函数,function1和function2。我想只执行function1 5秒,然后只执行function2 3秒,然后重复。

我尝试了time.sleep()函数,但是它冻结了整个程序,没有执行任何函数。

我尝试asyncio和线程,但它只是同时执行两个函数。

def function1():
//do something
def funtion2():
//do something else
while True:
function1()
// execute function1 for 5 seconds
function2()
// execute function2 for 3 seconds

你需要多精确?您是否需要考虑函数本身的运行时?那可真不容易。

这里有一个简单的方法:

import time  # built-in module

def timed_execution(func, s, *args, **kwargs):
t0 = time.time()
while True:
func(*args, **kwargs)
if time.time() - t0 >= s:
break

timed_execution(function1, 5)
timed_execution(function2, 3)

如果你想更花哨一点,并且你的函数需要执行的时间总是一样的,你可以使用一个装饰器:

import time

def timer(s):
def timed_func(func):
def timed_execution(*args, **kwargs):
t0 = time.time()
while True:
func(*args, **kwargs)
if time.time() - t0 >= s:
break
return timed_execution
return timed_func

@timer(5)
def function1():
pass

@timer(3)
def function2():
pass

如果您想在一定时间内使用带有参数的装饰器,但只是选择性地使用,则需要做更多的工作。查看如何使用条件装饰器。

相关内容

  • 没有找到相关文章

最新更新