我有一个问题,需要计算每个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
但是当消息包含一个向量或结构列表时,长度是不正确的。
请帮助解决此问题?
谢谢。
答案 0 :(得分:0)
问题是sys.getsizeof的行为:
仅考虑直接归因于对象的内存消耗,而不考虑其引用的对象的内存消耗。
这意味着仅使用列表引用的大小来计算对象大小。
已经有一些问题要解决:
解决方案是使用Pympler及其模块asizeof ,该模块为所需的计算提供功能:
函数asizeof以字节为单位计算一个或几个Python对象的组合(近似)大小
使用 pip
安装软件包后pip安装pympler
并将其导入到您的代码中,例如
from pympler.asizeof import asizeof
您可以像在回调中那样打印正确的对象大小
print('Size: ' + str(asizeof(data)))