Python 2.7 Добавление к dict слишком медленное - PullRequest
0 голосов
/ 01 мая 2018

Я работаю над скриптом Python. Он берет информацию о трафике подписчиков из файлов и помещает ее в специальные структуры. И это работает. Но это работает слишком медленно. Я написал тот же алгоритм на PHP, и он работает намного быстрее. Я заметил, что Python тратит много времени, чтобы поместить данные в текст. Скрипт PHP тратит 6 секунд на обработку моего тестового файла, а скрипт Python - 12 секунд (около 7 секунд, чтобы получить данные из файла, и 5 секунд, чтобы заполнить структуры). Мои структуры выглядят так: struct [subscriberId] [protocolId] = octents

И я использую следующую функцию, чтобы заполнить их:

def addBytesToStatStruct(struct, subscriberId, protocolId, octents):
  if subscriberId in struct:
    if protocolId in struct[subscriberId]:
      struct[subscriberId][protocolId] += octents
      return
      else:
        struct[subscriberId][protocolId] = octents
        return
  else:
    struct[subscriberId] = {protocolId : octents}

Может я что-то не так делаю? Я предполагаю, что моя проблема появляется из-за столкновений, происходящих во время добавления. Как я знаю, PHP использует цепочку, но Python использует открытую адресацию. Не могли бы вы дать мне подсказку, как я могу заставить Python диктовать быстрее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...