我有一个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)
答案 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。在每次迭代时,它将打印该值。上面的链接就足够了。祝你好运!