英文:
Based on repeated calls to the sleep() function, what is the minimum amount of time that the given code will require to execute?
问题
我试图解决两个问题 - 首先,我想知道以下代码在重复调用 sleep() 函数的情况下执行所需的最短时间。我给出的代码是:
```python
from tkinter import *
from time import *
root = Tk()
canvas = Canvas(root, width=600, height=400)
canvas.pack()
a = canvas.create_line(10, 50, 20, 60, fill="#0000AA", width=2)
for i in range (0, 500):
canvas.move(a, 1, 0.2)
root.update()
sleep(0.02)
起初我以为也许是 0.02,但这个答案似乎太明显了,并且没有考虑到循环。所以我有点困惑。
另外,为什么上述代码的实际执行时间会比根据 sleep() 函数调用计算出的时间更长呢?
<details>
<summary>英文:</summary>
I am trying to figure out 2 questions- Firstly, I would like to know the minimum amount of time that the following code will require to execute, given the repeated calls to the sleep() function. My given code is:
from tkinter import *
from time import *
root = Tk()
canvas = Canvas(root, width=600, height=400)
canvas.pack()
a = canvas.create_line(10, 50, 20, 60, fill="#0000AA", width=2)
for i in range (0, 500):
canvas.move(a, 1, 0.2)
root.update()
sleep(0.02)
At first I thought maybe it was 0.02, but that answer seems blatantly obvious and does not take into mind the loop. So I am a bit confused.
Also, why is it that the actual execution of the above code will take longer than the time calculated according to the calls to the sleep() function?
</details>
# 答案1
**得分**: 1
所以休眠会占用 10 秒(500 * 0.02),而其他调用 `canvas.move()` 和 `root.update()` 都会花费一些时间。可能不会太多,再加上一秒左右。
最简单的方法就是通过在你的代码周围加上一些计时代码来计算整个过程的时间:
```python
import datetime
start = datetime.datetime.now()
# 你的代码放在这里
end = datetime.datetime.now()
print(end-start)
英文:
So the sleep is going to consume 10 seconds (500 * 0.02) and the other calls canvas.move()
and root.update()
both are going to take some time. Probably not a ton, another second or so.
The easiest thing to do is just time the whole thing by wrapping your code in some timing code:
import datetime
start = datetime.datetime.now()
# your code here
end = datetime.datetime.now()
print(end-start)
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论