2012-02-28 109 views
1

我想通過zeromq發送大量數字,但將它們轉換爲str效率不高。什麼是通過zmq發送號碼的最佳方式?通過zeromq發送一個數字pyzmq

+0

如果您正在處理如此多的消息,那麼Python將轉換int <-->字符串的速度很慢,您可能需要重新考慮您的確切體系結構/語言選擇。 – lunixbochs 2012-02-28 21:04:21

+0

你發送什麼樣的數字(int/float,多大),消息中有多少個? – minrk 2012-02-28 21:18:01

回答

2

另一個串行幽州數字轉換到str是低效的。然而,除非你有一個真正奇特的網絡,否則無論選擇什麼解決方案,都必然會出現這種情況,因爲目前廣泛使用的所有網絡都是基於字節的。

當然,將數字轉換爲字節串的一些方法比其他方法更快。在C代碼中執行轉換可能會比在Python代碼中更快,但也要考慮排除「long」(bignum)整數是否可接受。如果排除它們是不可接受的,那麼str函數可能會更好。

如果排除長整數是可接受的,則structcpickle模塊的性能可能會比str好。

4

有幾個選項:

  • 使用Python的struct.pack/struct.unpack方法例如struct.pack(! 「L」,1234567)

  • 使用像msgpack

+0

msgpack的+1。它非常適合Python,因爲您可以像JSON對象一樣輕鬆地將字典轉換爲msgpaxk消息。它處理整數和漂浮相當有效。 – 2012-03-06 08:33:53