python - 每隔n秒在for循环中打印一些东西

时间:2015-05-07 17:04:50

标签: python loops math

我有一个for循环,迭代一个数字并执行一些简单的计算。我想弄清楚如何打印(或记录到文件)' val'的当前值。每隔0.5到1秒,不必在循环期间暂停或睡眠。这是一个超级简单的例子

val_list = []

for i in xrange(iterations):
    val = (i*(1/2)) * pi
    val2 = np.linalg.pinv(val)
    # print or write to log val2 after every half second (or 1 second)
    val_list.append(val2)

3 个答案:

答案 0 :(得分:3)

只需使用time.time来捕捉开始前的时间,然后检查计算val2后的时间:

import time

val_list = []

prev_time = time.time()

for i in xrange(iterations):
    val = (i*(1/2)) * pi
    val2 = np.linalg.pinv(val)
    # print or write to log val2 after every half second (or 1 second)
    dt = time.time() - prev_time
    if dt > 1:
        # print or write to log here
        prev_time = time.time()    
    val_list.append(val2)

答案 1 :(得分:1)

您可以使用time.time()

from time import time as t
val_list = []
nowTime = t()
for i in xrange(iterations):
    val = (i*(1/2)) * pi
    val2 = np.linalg.pinv(val)
    curTime = t()
    if curTime - nowTime >= 0.5:
        #Do your stuff
        nowTime = curTime
    val_list.append(val2)

答案 2 :(得分:1)

您可以使用主题实现此目的。

以下是有关如何利用线程的文档:https://docs.python.org/3/library/threading.html(如果您使用的是Python2.7,则将网址中的3更改为2)

这是一个类似于您想要的链接,也应指向正确的方向:Python threading.timer - repeat function every 'n' seconds

基本上你必须创建一个只执行n秒的Thread。在每次迭代时,它将打印该值。上面的链接就足够了。祝你好运!