Я пытаюсь создать набор данных, извлекая только определенные песни из большего набора данных .
Под конкретными я подразумеваю песни только с двумя инструментами, один из которых относится к семейству клавишных, а другой - к семейству струнных. Упрощенный код выглядит так:
for midi_file_path in Path(dir_path).glob('**/*.mid'):
try:
song = converter.parse(midi_file_path)
parts = instrument.partitionByInstrument(song)
if parts:
if len(parts) == 2:
if (parts.parts[0].id in keyboard_instruments and parts.parts[1].id in string_instruments) or \
(parts.parts[1].id in keyboard_instruments and parts.parts[0].id in string_instruments):
print(midi_file_path)
except Exception as e:
print("Exception ", midi_file_path, e)
pass
Этот процесс занимает много времени, и я бы хотел его оптимизировать.
Основной вопрос - почему процессор не работает на полной мощности , а только около 17%. В последней версии music21 написано - «Функция Extraction запускает многоядерный по умолчанию» .
![enter image description here](https://i.stack.imgur.com/qecDn.png)