我想做的是在打印或执行某个字符串后 在一定时间内,如果使用此功能,则为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
)
答案 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()
,并将变量定义为global
或nonlocal
:
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")