如何在 python 中获取 ROS MSG 长度?
How to get ROS MSG length in python?
我有一个问题需要计算每个 ROS 主题消息的长度。
我修改了rostopic(/opt/ros/smart-ros/lib/python2.7/dist-packages/rostopic / __ init__.py):
Class CallbackEcho(object) ->
Def callback (self, data, callback_args, current_time = None):
Print('message length =',sys.getsizeof(data)) #statics msg length
但是当消息包含向量或结构列表时,长度不正确。
请帮忙解决这个问题?
谢谢。
问题是sys.getsizeof的行为:
Only the memory consumption directly attributed to the object is accounted for, not the memory consumption of objects it refers to.
这意味着仅使用列表引用的大小来计算对象大小。
已经有几个问题与此有关:
- How do I determine the size of an object in Python?
- In-memory size of a Python structure
解决方案是使用Pympler and its module asizeof,它为所需的计算提供了一个函数:
Function asizeof calculates the combined (approximate) size of one or several Python objects in bytes
使用pip
安装包后
pip install pympler
并将其导入到您的代码中,例如
from pympler.asizeof import asizeof
您可以在回调中打印正确的对象大小,例如
print('Size: ' + str(asizeof(data)))
我有一个问题需要计算每个 ROS 主题消息的长度。
我修改了rostopic(/opt/ros/smart-ros/lib/python2.7/dist-packages/rostopic / __ init__.py):
Class CallbackEcho(object) ->
Def callback (self, data, callback_args, current_time = None):
Print('message length =',sys.getsizeof(data)) #statics msg length
但是当消息包含向量或结构列表时,长度不正确。
请帮忙解决这个问题?
谢谢。
问题是sys.getsizeof的行为:
Only the memory consumption directly attributed to the object is accounted for, not the memory consumption of objects it refers to.
这意味着仅使用列表引用的大小来计算对象大小。
已经有几个问题与此有关:
- How do I determine the size of an object in Python?
- In-memory size of a Python structure
解决方案是使用Pympler and its module asizeof,它为所需的计算提供了一个函数:
Function asizeof calculates the combined (approximate) size of one or several Python objects in bytes
使用pip
安装包后pip install pympler
并将其导入到您的代码中,例如
from pympler.asizeof import asizeof
您可以在回调中打印正确的对象大小,例如
print('Size: ' + str(asizeof(data)))