如何在python中获取ROS MSG长度?

时间:2019-02-03 02:30:40

标签: python message ros

我有一个问题,需要计算每个ROS主题消息的长度。

我改性rostopic(/opt/ros/smart-ros/lib/python2.7/dist-packages/rostopic / __初始化__ PY):

Class CallbackEcho(object) ->
Def callback (self, data, callback_args, current_time = None):
    Print('message length =',sys.getsizeof(data)) #statics msg length

但是当消息包含一个向量或结构列表时,长度是不正确的。

请帮助解决此问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

问题是sys.getsizeof的行为:

  

仅考虑直接归因于对象的内存消耗,而不考虑其引用的对象的内存消耗。

这意味着仅使用列表引用的大小来计算对象大小。

已经有一些问题要解决:

解决方案是使用Pympler及其模块asizeof ,该模块为所需的计算提供功能:

  

函数asizeof以字节为单位计算一个或几个Python对象的组合(近似)大小

使用 pip

安装软件包后
  

pip安装pympler

并将其导入到您的代码中,例如

from pympler.asizeof import asizeof

您可以像在回调中那样打印正确的对象大小

print('Size: ' + str(asizeof(data)))