使用 Python 计算接收到的 Midi 输入数
Count number of Midi inputs received using Python
我正在使用 Mido (https://mido.readthedocs.io/en/latest/) 在 Python 中接收 Midi 消息。
我希望能够记录每次有新输入时收到的消息数。
问题:
如何将所有输入包装在一个列表中?
然后如何将新的输入项添加到列表中?
随着该列表不断变化,我如何计算该列表中的项目数?
class MyThread(threading.Thread):
def run(self):
for msg in inport:
print msg
m = MyThread()
m.start()
这会产生如下输出:
control_change channel=0 control=16 value=1 time=0
control_change channel=0 control=16 value=2 time=0
control_change channel=0 control=16 value=3 time=0
control_change channel=0 control=16 value=4 time=0
control_change channel=0 control=16 value=5 time=0
control_change channel=0 control=16 value=6 time=0
control_change channel=0 control=16 value=7 time=0
您只需修改线程 class 即可对 inport
列表进行操作,如下所示:
class MyThread(threading.Thread):
inport = []
def add(ele):
inport.append(ele)
def count():
return len(inport)
def run(self):
for msg in self.inport:
print msg
m = MyThread()
m.start()
如果您是列表中的 运行 个多线程,您可以使用像 Queue
这样的同步结构。了解更多 here
我正在使用 Mido (https://mido.readthedocs.io/en/latest/) 在 Python 中接收 Midi 消息。 我希望能够记录每次有新输入时收到的消息数。
问题:
如何将所有输入包装在一个列表中?
然后如何将新的输入项添加到列表中?
随着该列表不断变化,我如何计算该列表中的项目数?
class MyThread(threading.Thread):
def run(self):
for msg in inport:
print msg
m = MyThread()
m.start()
这会产生如下输出:
control_change channel=0 control=16 value=1 time=0
control_change channel=0 control=16 value=2 time=0
control_change channel=0 control=16 value=3 time=0
control_change channel=0 control=16 value=4 time=0
control_change channel=0 control=16 value=5 time=0
control_change channel=0 control=16 value=6 time=0
control_change channel=0 control=16 value=7 time=0
您只需修改线程 class 即可对 inport
列表进行操作,如下所示:
class MyThread(threading.Thread):
inport = []
def add(ele):
inport.append(ele)
def count():
return len(inport)
def run(self):
for msg in self.inport:
print msg
m = MyThread()
m.start()
如果您是列表中的 运行 个多线程,您可以使用像 Queue
这样的同步结构。了解更多 here