zeromq 経由で多数の数値を送信したいのですが、それらを str に変換するのは非効率的です。zmq 経由で番号を送信する最良の方法は何ですか?
質問する
2876 次
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 に答える