当我们有 turtle.tracer(0) 时是否需要设置 `turtle.speed(0)`
Is setting `turtle.speed(0)` necessary when we have turtle.tracer(0)
有区别吗:
import turtle
turtle.tracer(0)
turtle.speed(0)
while True:
turtle.goto(turtle.xcor()+1)
turtle.update()
并且:
import turtle
turtle.tracer(0)
while True:
turtle.goto(turtle.xcor()+1)
turtle.update()
我听说设置 turtle.speed(0)
可以加快速度,但如果是这样,我看不出有什么区别。
根据:https://www.eg.bucknell.edu/~hyde/Python3/TurtleDirections.html
tracer()
方法:
可用于加速复杂图形的绘制。
关闭乌龟会使乌龟消失并使绘制速度更快。
官方文档https://docs.python.org/2/library/turtle.html#turtle.speed说:
- “fastest”: 0 # 用于设置乌龟速度
结论:我认为可以这样说:
如果你正在做非常复杂的图形,并且你想要速度,请同时使用这两种图形,在复杂的图形中你应该会看到一些差异,因为它们都可以加速海龟
如果你做的是简单的图形,使用两者的速度不会比你做复杂的图形那么明显,所以没有必要同时使用两者而只使用,例如: turtle.speed(0)
根据官方文档:https://docs.python.org/2/library/turtle.html#turtle.tracer tracer() 在较新版本的 turtle 模块中已被弃用。
所以我建议先改变速度,然后如果你需要更快的性能改变追踪器。或者您可以禁用跟踪器,因为您不想显示乌龟动画,这真的取决于您,但我希望我能指导您。
我编写自己的代码和重写其他人的代码的经验是,关闭跟踪后,tracer(0)
,Turtle.speed()
方法没有区别。 turtle.py 源代码似乎与此相呼应:
if self._speed and screen._tracing == 1:
只有在追踪时,tracer(1)
,我们才会考虑乌龟的速度。
此外,根据我的经验,关闭追踪比 turtle.speed('fastest')
具有 更多 效果,因为 speed()
方法仅影响单个海龟,而 tracer(0)
影响所有海龟和潜在的其他动作。
我自己关于 tracer()
的经验法则:
使用update()
向用户显示当前图形状态,避免
为此目的打开和关闭 tracer()
。
不要假设您的 update()
电话是唯一的电话。一些海龟操作
打电话给 update()
所以不要感到惊讶。
在您的代码基本正常工作之前不要关闭跟踪——即不要
在黑暗中调试。
如果您不使用事件(例如鼠标、键盘、计时器),则在
final mainloop()
调用或等效调用。否则像隐藏这样的后期动作
乌龟似乎不会发生。
不要使用除 0 和 1(或 False
和 True
)以外的任何参数。
强制更新每 N 个动作的数值很难工作
出来,通常是错误的。
如果你关闭跟踪,你可以扔掉你的 speed()
个电话。
有区别吗:
import turtle
turtle.tracer(0)
turtle.speed(0)
while True:
turtle.goto(turtle.xcor()+1)
turtle.update()
并且:
import turtle
turtle.tracer(0)
while True:
turtle.goto(turtle.xcor()+1)
turtle.update()
我听说设置 turtle.speed(0)
可以加快速度,但如果是这样,我看不出有什么区别。
根据:https://www.eg.bucknell.edu/~hyde/Python3/TurtleDirections.html
tracer()
方法:
可用于加速复杂图形的绘制。
关闭乌龟会使乌龟消失并使绘制速度更快。
官方文档https://docs.python.org/2/library/turtle.html#turtle.speed说:
- “fastest”: 0 # 用于设置乌龟速度
结论:我认为可以这样说:
如果你正在做非常复杂的图形,并且你想要速度,请同时使用这两种图形,在复杂的图形中你应该会看到一些差异,因为它们都可以加速海龟
如果你做的是简单的图形,使用两者的速度不会比你做复杂的图形那么明显,所以没有必要同时使用两者而只使用,例如: turtle.speed(0)
根据官方文档:https://docs.python.org/2/library/turtle.html#turtle.tracer tracer() 在较新版本的 turtle 模块中已被弃用。
所以我建议先改变速度,然后如果你需要更快的性能改变追踪器。或者您可以禁用跟踪器,因为您不想显示乌龟动画,这真的取决于您,但我希望我能指导您。
我编写自己的代码和重写其他人的代码的经验是,关闭跟踪后,tracer(0)
,Turtle.speed()
方法没有区别。 turtle.py 源代码似乎与此相呼应:
if self._speed and screen._tracing == 1:
只有在追踪时,tracer(1)
,我们才会考虑乌龟的速度。
此外,根据我的经验,关闭追踪比 turtle.speed('fastest')
具有 更多 效果,因为 speed()
方法仅影响单个海龟,而 tracer(0)
影响所有海龟和潜在的其他动作。
我自己关于 tracer()
的经验法则:
使用
update()
向用户显示当前图形状态,避免 为此目的打开和关闭tracer()
。不要假设您的
update()
电话是唯一的电话。一些海龟操作 打电话给update()
所以不要感到惊讶。在您的代码基本正常工作之前不要关闭跟踪——即不要 在黑暗中调试。
如果您不使用事件(例如鼠标、键盘、计时器),则在 final
mainloop()
调用或等效调用。否则像隐藏这样的后期动作 乌龟似乎不会发生。不要使用除 0 和 1(或
False
和True
)以外的任何参数。 强制更新每 N 个动作的数值很难工作 出来,通常是错误的。如果你关闭跟踪,你可以扔掉你的
speed()
个电话。