我正在尝试创建一个在我的代码后台运行的计时器功能,并使其可以使用/检查时间。我的意思是使用/检查,我正在尝试这样做,所以我可以调用该定时器函数并将其用作整数。
这是我目前的代码:
def timer():
for endtime in range(0, 15):
print(15 - endtime)
time.sleep(1)
def hall():
timer()
while (timer > 0):
do something
目前仅使用print(15 - endtime)
进行确认,它正在倒计时。
但是代码现在做的是执行倒计时,就是这样,它永远不会触及while循环。当然最后一个问题是我无法将函数设置为int。所以我正在寻找一些方法,我可以检查定时器所在的位置,并在循环中使用它。
答案 0 :(得分:1)
你这样做的方式,你将不得不使用多线程。
这是另一种更简单的方法:
在您的脚本开头,使用time_start
设置time.time()
变量,其中包含自纪元以来的秒数
然后,当您需要经过的秒数时,请使用time.time() - time_start
:
t_start = time.time()
# do whatever you'd like
t_current = int(time.time()-t_start) # this way you get the number of seconds elapsed since start.
您也可以将它放在一个函数中,将t_start定义为全局变量。
import time
t_start = time.time()
def timer():
global t_start
print(str(int(time.time()-t_start)))
print('start')
time.sleep(2)
timer()
time.sleep(3)
timer()
答案 1 :(得分:0)
import time
def timer(tim):
time.sleep(1)
print tim
def hall():
tim = 15
while (tim > 0):
print 'do something'
timer(tim)
tim-=1
不是最干净的解决方案,但它会做你需要的。
答案 2 :(得分:0)
代码的问题在于,当您运行hall()
时,Python首先执行整个timer()
(即整个for
循环),然后继续运行代码(它一次只能做一件事)。因此,当它到达while
中的hall()
循环时,timer
已经0
。
因此,您必须对timer
做一些事情,以便它倒计时一次,然后转移到do something
部分。
你能做的就是:
def hall():
for a in range(0, 15):
print(15 - a)
# do something
time.sleep(1)
这应该可以正常工作(如果您只执行hall
15次),并将代码压缩为一个函数。