2016-12-02 293 views
0

我正在用python写一个倒计时时钟,但它看起来像时间模块只能下到第二个。有没有办法让我准确确定何时完成了1秒?Python:如何将代码的执行时间延长到1秒

似乎我的问题有点令人困惑,让我澄清。我需要运行一些代码,然后程序进入一个while循环,一旦代码开始运行至少1000毫秒后退出

+0

你尝试datetime模块?具体检查timedelta对象 – miraculixx

+0

[Timer](https://docs.python.org/3/library/threading.html#timer-objects)对象。 –

+0

由于我需要运行一些代码,然后等待第二秒的剩余时间过去,计时器并不会真正为我所做的工作。我不想等一秒钟,然后运行代码,因为那么它将关闭 – user3246167

回答

1

如果您知道要运行需要不到1秒的代码,然后1 - elapsed time会给你剩下的时间睡觉,不需要while循环。

now = time.time() 
foo() 
time.sleep(1 - (time.time() - now)) 

算术会有一些开销,但它在一秒之内,并且严格大于1秒,如您所请求的。我跑到下面的代码:

import time 
import random 

def foo(): 
    time.sleep(random.random()) 

now = time.time() 
foo() 
time.sleep(1 - (time.time() - now)) 

print "Time elapsed: {}".format(time.time() - now) 

输出:

Time elapsed: 1.00379300117 

可以运行了几次,以验证它给你想要的输出,无论foo需要多长时间。

除非花费时间超过1秒,否则睡眠时间将为负值,这将导致IOError。你需要检查这种情况。

或者,如果你需要的,如果1秒传给杀功能,检查this question

+0

谢谢!正是我需要的! – user3246167

0

默认情况下,time模块为您提供时间10^-5秒

import time 
time.time() 
>>> 1480643510.89443 
1

这里是一个办法,将工作,但林不知道哪个模块你是有限的。

import time 

def procedure: 
    time.sleep(2.5) 

# measure wall time 
t0 = time.time() 
procedure() 
print time.time() - t0, "seconds wall time" 

2.50023603439秒壁时间

其中程序是您正在计时功能的引用。

相关问题