1

zeromq 経由で多数の数値を送信したいのですが、それらを str に変換するのは非効率的です。zmq 経由で番号を送信する最良の方法は何ですか?

4

2 に答える 2

4

いくつかのオプション:

  • Python の struct.pack / struct.unpack メソッドを使用します。例: struct.pack("!L", 1234567)

  • msgpackのような別のシリアライザーを使用する

于 2012-02-28T21:30:09.970 に答える
3

数値の変換strは非効率的であると述べています。しかし、真に風変わりなネットワークを使用している場合を除き、現在広く使用されているすべてのネットワークはバイトベースであるため、どのようなソリューションを選択したとしても、まさにそれが発生するはずです。

もちろん、数値をバイト文字列に変換するいくつかの方法は、他の方法よりも高速です。C コードで変換を実行すると、Python コードよりも高速になる可能性がありますが、「長い」(bignum) 整数を除外してもよいかどうかも検討してください。それらを除外することが受け入れられない場合、str機能は十分に優れている可能性があります。

structおよびモジュールは、long 整数の除外が許容される場合cpickleよりもパフォーマンスが向上する可能性があります。str

于 2012-02-28T23:03:10.293 に答える