2012-02-28 4 views
1

Я хочу отправить много чисел через zeromq, но преобразование их в str неэффективно. Каков наилучший способ отправки чисел через zmq?отправьте номер по zeromq pyzmq

+0

Если вы обрабатываете так много сообщений, для Python для преобразования строки int медленно, вам может потребоваться переосмыслить вашу точную архитектуру/язык. – lunixbochs

+0

Какие числа (int/float, how large) вы отправляете, сколько в сообщении и т. Д.? – minrk

ответ

2

Вы утверждаете, что преобразования чисел в str неэффективна. И все же, если у вас нет действительно экзотической сети, это именно то, что должно произойти независимо от того, какое решение выбрано, потому что все широко используемые в настоящее время сети основаны на байтах.

Конечно, некоторые способы преобразования чисел в байтовые строки быстрее других. Выполнение преобразования в коде C, скорее всего, будет быстрее, чем в коде Python, но также учтите, допустимо ли исключать целые числа «long» (bignum). Если исключение их неприемлемо, функция str может быть такой же хорошей, как и она.

Модули struct и cpickle могут работать лучше, чем str, если исключить длинные целые числа.

4

Несколько вариантов: методы struct.pack/struct.unpack

  • использовать питона, например struct.pack ("! L", 1234567)

  • использование другой сериализатору как msgpack

+0

+1 для msgpack. Он идеально подходит для Python, потому что вы можете превратить dict в сообщение msgpaxk так же легко, как объект JSON. И он обрабатывает целые числа и плавает достаточно эффективно. –