2012-02-28 71 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