Я создаю класс, среди прочего, со словарем с целочисленными ключами и значениями списка. Однако добавление значений в этот словарь кажется настоящим узким местом, и мне было интересно, может ли быть какой-то способ ускорить мой код.
class myClass():
def __init__(self):
self.d = defaultdict(list)
def addValue(self, index, value):
self.d[index].append(value)
Действительно ли это оптимальный способ сделать это? Меня не волнует порядок значений, поэтому, возможно, есть более подходящая структура данных с более быстрым добавлением. Опять же, «добавить» не кажется основной проблемой, потому что, если я просто добавлю к пустому списку, код будет намного быстрее. Я предполагаю, что загрузка ранее сохраненного списка занимает большую часть времени?
Я обнаружил, что проблема не в словаре, а в добавлении списка (хотя я утверждал обратное в своем исходном посте, за что прошу прощения). Эта проблема возникает из-за ошибки в сборщике мусора Python, которая хорошо объяснена в этом другом вопросе. Отключение gc перед добавлением всех значений, а затем его повторное включение значительно ускоряет процесс!