Python-一段时间后执行功能?

时间:2019-01-05 14:19:11

标签: python time

我想做的是在打印或执行某个字符串后 在一定时间内,如果使用此功能,则为20秒, 问题出在第二个循环上,请确保它在第一个循环上等待20秒, 但是第二个循环不再等待,而是继续打印。 为什么会这样?而我该如何解决呢?

def get_table(self, **kwargs):
    table_class = self.get_table_class()
    # I only change this line from the original to make sure that the self.get_queryset() is called to return the data
    table = table_class(data=self.get_queryset(), **kwargs)
    return RequestConfig(self.request, paginate=self.get_table_pagination(table)).configure(
        table
    )

4 个答案:

答案 0 :(得分:2)

您需要在“成功”(已传递20秒)的tess调用之间重置startlog,此代码可以按您想要的方式工作(但由于全局变量而很难看)。

import time

startlog = time.time()

def tess():
    global startlog
    if time.time() - 20 > startlog:
        print('its been 20 secs')
        startlog = time.time()


tm = 0
while True:
    tm += 1
    print(tm)
    tess()
    time.sleep(1)

答案 1 :(得分:0)

您必须将start = time.time()更改为startlog = time.time(),并将变量定义为globalnonlocal

def tess():
    nonlocal startlog
    ...
        startlog = time.time()

或者只需等待20秒:time.sleep(20)

答案 2 :(得分:0)

您需要在tess()函数的循环内更新startlog变量。您需要更换

start = time.time()

具有:

startlog = time.time() 

答案 3 :(得分:0)

听起来您正在尝试在后台运行某些内容20秒钟,然后执行功能。

如果是这种情况,则进行线程/多处理更有意义。

使用this decorator,您的代码可以重写为

@time_limit(20)
def will_stop_after_20_secs():
    print ("doing stuff")
    time.sleep(20)


will_stop_after_20_secs()
print ("20 seconds had passed")