2012-02-28 9 views
1

zeromqでたくさんの数字を送信したいが、strに変換するのは非効率的です。 zmq経由で番号を送信する最も良い方法は何ですか?はzeromq pyzmqで番号を送信します

+0

あなたが非常に多くのメッセージを処理している場合は、Pythonがint <-->文字列を変換するのが遅いので、正確なアーキテクチャ/言語の選択を再考する必要があります。 – lunixbochs

+0

送信している数字の種類(int/float、大きさ)、メッセージの数など – minrk

答えて

2

のような別のシリアライザを使用します。しかし、あなたが本当にエキゾチックなネットワークを持っていない限り、それはどんなソリューションが選択されてもまさに何が起こらなければならないのでしょうか?今日広く使われているすべてのネットワークはバイトベースです。

もちろん、数値をバイト列に変換する方法は他の方法よりも高速です。 Cコードでの変換は、Pythonコードよりも高速になる可能性がありますが、 "long"(bignum)整数を除外してもかまいません。それらを除外することが許容できない場合、str機能はそれが得られるほど良好である可能性があります。

長整数が許容されない場合、モジュールは、strより優れた性能を発揮します。

4

いくつかのオプション:例えば

  • 使用パイソンのstruct.pack/struct.unpack方法struct.pack( "!のL"、1234567)

  • はあなたがstrに番号を変換することは非効率的であると述べているmsgpack

+0

+1のmsgpack。これは、あなたが簡単にJSONオブジェクトのようにmsgpaxkメッセージにすることができるので、Pythonにとって理想的です。また、整数や浮動小数点数を効率よく処理します。 –