基于Python的循环时间

时间:2015-04-30 10:31:01

标签: python for-loop

我有一个程序,包括执行基于时间的循环。有点像......

import time
endtime=time.time()+60.0 #1minute
while (time.time()<endtime):
    do something

我只是想知道这是否可以使用for循环?我可以在python中构建基于循环的时间吗?

3 个答案:

答案 0 :(得分:4)

来自https://wiki.python.org/moin/ForLoop

  

我何时使用for循环?   传统上,当您有一段要重复n次的代码时,就会使用For循环。作为替代方案,有WhileLoop,但是,当要满足条件时使用,或者如果你想要一段代码永远重复,例如 -

legToRemove循环对此任务感觉更自然,因为NULL需要可枚举或生成器。

但如果你真的想用while循环来做,我想你可以构造一个产生一些东西直到for的生成器:

for

但是如你所见,你在幕后再次使用time.time()<endtime

也许有人可以设法不使用生成器中的def there_is_more_time(e) while time.time() < e: yield True for i in there_is_more_time(endtime): do something ,但这样做有什么意义呢?

答案 1 :(得分:3)

不确定。这是一个迭代器,它为您提供从重复开始到结束的时间:

while

当我运行它时,它会输出:

while

如果您需要一些不同的值,只需更改def time_counter(seconds): starttime = time.time() while True: now = time.time() if now > starttime + seconds: break yield now - starttime for t in time_counter(20): print(t) time.sleep(3) 表达式。

如果您不需要任何价值......那么您不需要9.5367431640625e-07 3.002220869064331 6.0040669441223145 9.004395961761475 12.006848812103271 15.009617805480957 18.011652946472168 声明;您现有的代码已经完全可读,并且迭代并丢弃一些无意义的值的yield循环只会让它变得混乱。

答案 2 :(得分:0)

也许你想创建一个scheduler对象?

https://docs.python.org/2/library/sched.html

import sched, time
s = sched.scheduler(time.time, time.sleep)

def print_time(): 
    print "From print_time", time.time()

def print_some_times():
    print time.time()
    s.enter(1, 1, print_time, ())
    s.enter(2, 1, print_time, ())
    s.enter(3, 1, print_time, ())
    s.enter(4, 1, print_time, ())
    s.enter(5, 1, print_time, ())
    s.run()
    print time.time()

输出:

1430392956.35
From print_time 1430392957.35
From print_time 1430392958.35
From print_time 1430392959.35
From print_time 1430392960.35
From print_time 1430392961.35
1430392961.35