通过dbus传递大型数据结构
问题内容:
我正在使用dbus交流两个程序。一个创建一个大图像,然后将其发送给其他程序进行进一步处理。我将图像作为ByteArray传递。
对于2000x2000的图像,我的程序可以运行,但是对于4000x4000的图像,它的苛求是:
process 2283: arguments to dbus_message_iter_append_fixed_array() were
incorrect,assertion "n_elements <= DBUS_MAXIMUM_ARRAY_LENGTH / _dbus_type_get_alignment
(element_type)" failed in file dbus-message.c line 2628.
我了解这意味着我传递的数组大于允许的范围。还有其他方法可以在dbus中传递大数据结构吗?
这是我正在使用的代码的摘录:
handle = StringIO()
# hdulist contains the large data structure
hdulist.writeto(handle)
hdub = dbus.ByteArray(handle.getvalue())
# this sends the image via dbus
self.dbi.store_image(hdub)
在另一端,我有类似
def store_image(self, bindata):
# Convert binary data back to HDUList
handle = StringIO.StringIO(bindata)
hdulist = pyfits.open(handle)
问题答案:
我认为Dbus并不是发送大量数据的最佳方法。
如何将数据结构写出到/ tmp中的文件,然后仅通过dbus在程序之间传递文件名呢?