回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在写一个程序来记录一些测量结果。为了每秒记录一次,我在日志函数<code>log()</code>的末尾使用<code>after()</code>来调用它。这是在创建递归,因此不按时间顺序返回日志吗?(每秒打印超过1个日志)如何确保每个条目按时间顺序以每秒打印1个日志?你知道吗</p>
<p>以下是我的一些代码:</p>
<pre><code> def log(self):
if self.running ==True:
self.current_date = time.strftime("%Y-%m-%d")
now = datetime.datetime.now()
self.current_time = datetime.time(now.hour, now.minute, now.second)
if self.boolvars[0].get() == True:
self.t = self.t + str(self.current_date) + ", "
if self.boolvars[1].get() == True:
self.t = self.t + str(self.current_time) + ", "
if self.boolvars[2].get() == True:
self.t = self.t + str(self.mic.VacGetPressure(0)) + ", "
self.champres.append(str(self.mic.VacGetPressure(0)))
if self.boolvars[3].get() == True:
...
...
...
self.screen.insert(INSERT, self.t)
self.parent.after(1000,self.log)
</code></pre>
<p>以下是一些示例输出:</p>
<pre class="lang-none prettyprint-override"><code>2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:38, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:37, 0.001,
</code></pre>
<p>在第二列中,很明显日志记录每秒发生不止一次,并且没有按时间顺序返回。
对<code>after()</code>的任何解释都会有帮助,如果我需要把它移出<code>log()</code>,或者放到哪里。你知道吗</p>
<p>提前谢谢。你知道吗</p>