Я извлечение JPEG из gphoto2, создавая поток Гио из данных, а затем создать Pixbuf из потока:Python PyGObject pixbuf просачиваться
import gphoto2 as gp
from gi.repository import Gio, GdkPixbuf
camera = gp.Camera()
context = gp.Context
camera.init(context)
file = gp.CameraFile()
camera.capture_preview(file, context)
data = memoryview(file.get_data_and_size())
stream = Gio.MemoryInputStream.new_from_data(data)
pixbuf = GtkPixbuf.Pixbuf.new_from_stream(stream)
# display pixbuf in GtkImage
Функция делает это прикреплена к холостому Gtk с использованием GLib.idle_add(...)
. Он работает, но он теряет память. Использование памяти процесса постоянно растет. Он течет даже тогда, когда строка, строящая pixbuf, закомментирована, но не тогда, когда строка, строящая поток, также закомментирована, поэтому кажется, что это сам поток течет. Добавление stream.close()
после создания pixbuf не помогает.
Какой правильный способ освободить память здесь?