我注意到Jython Music for Music(JEM)有自己的Timer实现,如https://jythonmusic.me/timer-library/所述。文档显示了一个函数t.setDelay(delay),其中 delay 以毫秒为单位。
我的问题是, t.setDelay(延迟)似乎对延迟时间没有影响。计时器继续使用创建时设置的原始延迟。
我想知道这是不是一个错误(可能在另一次更新期间被破坏了?),或者是否有一个我没有看到的技巧。
代码:我的代码是更大类的一部分。相关的行是:
__init __ 中的
self.t = Timer(500, self.metronome, (), True)
in self.metronome()
required_delay = int(60000.0/self.adjusted_16count)
self.t.setDelay(required_delay)
节拍器()功能继续以原始速度重复(在这种情况下,每500毫秒),与setDelay()函数无关。奇怪的是,如果我通过添加
来查看延迟值 print self.t.getDelay()
在上面的代码之后,它显示了正确的值(在我的情况下为125),但它在物理上继续运行,就像原始值有效一样。我通过设置非常长且非常短的初始值以及可观察的结果(声音)来实验证实 - 即使 getDelay()显示更改,声音之间的时间段保持与原始值相同
提前感谢任何建议。
答案 0 :(得分:0)
我不确定Timer类的实现是否存在问题(尽管可能是......)以下工作正常(即,它会改变Timer的延迟时间)。
from timer import *
delay = 1000
def echo(x):
print x,
t = Timer(delay, echo, ["."])
t.start()
# change this delay as desired, while the program is running, via JEM's
# live-coding functionality (i.e., Run/Run current line)...
t.setDelay(2000)
我认为问题可能在其他地方。试试这个,看看......