【发布时间】:2017-09-21 15:29:32
【问题描述】:
运行以下代码(修改自1)
import tkinter as tk
import time
import os
class App():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(text="")
self.label.pack()
self.update_clock()
self.root.mainloop()
def update_clock(self):
now = time.strftime("%H:%M:%S")
self.label.configure(text=now)
print(now)
print (os.times())
self.root.after(1000, self.update_clock)
app=App()
随着时间的推移略微增加 CPU 负载。在下面的示例中,1 分钟内从 0.1 到 0.2
17:15:49
nt.times_result(user=0.0780005, system=**0.1092007**, children_user=0.0, children_system=0.0, elapsed=0.0)
17:16:49
nt.times_result(user=0.0780005, system=**0.2184014**, children_user=0.0, children_system=0.0, elapsed=0.0)
从长远来看,这将使一切停滞不前。
如何克服这种行为?
有没有更好的解决方案来“永远”在 tkinter 中显示时钟?
【问题讨论】:
-
这很有趣。我也看到了同样的缓慢增长。
-
您确定“从长远来看,这会使一切停滞不前”吗?当然,这假设 CPU 消耗呈线性增长,但很可能并非如此。
-
这真的是你的代码吗?
update_clock的缩进看起来很可疑。 -
增加系统时间并不意味着增加cpu负载。这只是意味着系统正在代表 python 执行任务。例如,当您拨打
time.strftime时。每次调用此函数时,系统时间都会增加。
标签: python time tkinter cpu-usage can-bus