Это плохая идея, поскольку вы в конечном итоге отправляете таким образом больше данных по шине (такой же объем данных, какой был бы в противном случае, плюс дополнительные заголовки сообщений).

ользую 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)

Ответы на вопрос(3)

Ваш ответ на вопрос