【发布时间】:2015-06-14 04:00:07
【问题描述】:
我上个月才发现python,我根本不是程序员。我正在尝试为电子仪器创建自己的软件。 我实际上需要创建一个触发器,它将每 0.04 毫秒调用一个函数 (如果它是可能的)。我试过这个:
在我的第一个文件 Metronome.py 中:
class Metronome:
def __init__(self, clip, _matrix):
self.clip = clip
self._matrix = _matrix
self.inc = -1
def _trigger(self):
self.inc = self.inc + 1
self._matrix.get_button(self.inc, 1).send_value(GREEN_FULL)
t = threading.Timer(1.0, self._trigger).start()
在第二个文件和一个新类中:
我导入之前的函数:
from Metronome.py import Metronome
我调用前面的函数:
Metronome(self.clip, self._matrix)._trigger()
在_trigger 函数中,self._matrix.get_button(self.inc, 1).send_value(GREEN_FULL) 允许我在仪器界面上发送 LED 反馈。
当我启动该程序时,我实际上得到了关于我的仪器的第一个 LED 反馈。但是,其他设置需要 1 秒以上,并且其中一些会同时出现。此外,每次反馈后,下一次的时间都会增加(如 5/10 秒)。我不明白!
【问题讨论】:
-
我已尝试编辑您的代码以美化问题并使其易于理解,但仍有太多未知数。
-
请正确格式化代码并说明它是否在另一个类中(否则对
self.的引用过多) -
对不起,我按你说的做了,这样更好吗?
-
另外:.py 后缀在 import 语句中是不必要的
-
ehm.. 节拍器是一个类,而不是一个函数。您正在实例化一个 Metronome 类的对象,然后调用它的
_trigger方法。这很好。但是,根据我之前的问题,您为什么要通过self.引用您的clip和_matrix参数?该调用是在另一个类中进行的,而这些变量是它的属性吗?
标签: python multithreading python-2.7 timer