Я начал экспериментировать с модулем XML -RP C, так как в Интернете ничего особенного нет. Первоначально для обработки моих данных (~ 15 мегабайт) я просто передавал объект словаря методу XML -RP C на стороне клиента. Это было очень медленно, как на стороне сервера, так и на стороне клиента - каждая из них занимала несколько минут всего для кодирования / декодирования данных! Я предполагаю (но не уверен), что это проблема с необходимостью кодирования большого количества данных в XML.
Однако после некоторой возни я попытался сериализовать словарь как JSON объект с json.dumps
на стороне клиента и загрузить его с json.loads
на стороне сервера, что, к моему удивлению, закончилось до много раз быстрее.
Предупреждение: Чистая спекуляция!
Я подозреваю, что кодировка XML может быть намного медленнее, чем кодировка JSON, поскольку записано json.dumps
в CPython, но я не знаю, записано ли кодирование Python XML в CPython. Я столкнулся с подобной проблемой, используя json.dumps
против json.dump
в предыдущем проекте: последний во много раз медленнее, потому что он написан на чистом Python; в отличие от записи в CPython (по словам в отчете об ошибке Python, "json .dump не использует ускорения C": https://bugs.python.org/msg137170 ).
I может теоретически загрузить сериализованную строку JSON (или засеченный объект dict, но это кажется мне плохой идеей) в облачное хранилище, такое как AWS S3 , а затем потяните его на стороне сервера, но я чувствую, что я мог бы просто отправить данные прямо с одного компьютера на другой в этот момент.
Я собираюсь поэкспериментировать с сжатием gzip для сериализованной строки JSON, которая, как мы надеемся, станет узким местом для пропускной способности сети, поскольку в конечном итоге я планирую обрабатывать гигабайты данных через RP C. Я опубликую свои результаты здесь.
Я думал, что это было интересно, и мне интересно, сталкивался ли кто-нибудь с этой проблемой раньше, и как они это сделали. Я не смог найти много онлайн. Ура!