Подсчитайте количество входных данных Midi, полученных с помощью Python

Я использую Mido (https://mido.readthedocs.io/en/latest/ ) для получения сообщений Midi в Python. Я хотел бы иметь возможность вести счетчик количества сообщений, получаемых каждый раз, когда появляется новый ввод.

Вопросы:

Как я могу обернуть все входы в список?

Как добавить новые элементы ввода в список?

Как я могу подсчитать количество элементов в этом списке, поскольку этот список постоянно меняется?

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

person NewbCake    schedule 27.11.2018    source источник


Ответы (1)


Вы можете просто изменить класс своего потока, чтобы он выполнял операции со списком 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. Подробнее здесь

person Shariq    schedule 27.11.2018