【发布时间】:2015-09-22 06:55:00
【问题描述】:
我的目标是能够运行一个函数并每秒打印一次结果。我希望它看起来像这样:
打印:
“在 {seconds} 你有 {value}。” // 如果值来自另一个函数,我们也可以假设该值上升了一个常数,但由另一个函数计算。
并继续在每一秒的新行上打印它。到目前为止,我遇到了两个问题。
1) 我无法编写每秒打印一个值的函数。我尝试过使用 threading 和 time,但我无法让它工作。
2)如果我将睡眠定时器设置为 1 秒,则必须花费几毫秒(或更短的时间测量)来计算函数,然后才能打印上述行。我想,经过几十万次计算,我的时间和值将不再准确。
到目前为止,我是从另一个线程借来的:
def update(i):
threading.Timer(1, update, [i]).start()
sys.stdout.write(str(i)+'\r')
sys.stdout.flush()
print(i)
i += 1
这个功能不像我想象的那样工作。我认为它每次都会将 i 的值加一,然后将该值放回 update() 函数中。它只是每次都打印出相同的值。老实说,我不知道为什么,我试着逐行弄清楚,但可惜我做不到。
谢谢
-2.0
【问题讨论】:
-
在这个blog entry 中描述了如何使用新的异步执行类似的操作。也许这有帮助。
标签: python multithreading python-3.x time