pygtk загружает поток изображений только в один pixbuf - PullRequest
2 голосов
/ 16 июня 2009

Я пытаюсь встроить библиотеку chartdrawer, которая может дать мне только изображение bmp в буфере.

Я загружаю это изображение и должен явно вызвать delete во вновь созданном pixbuf, а затем вызвать сборщик мусора.

Метод рисования вызывается каждые 50 мс

вызов сборщика мусора действительно потребляет процессор.

Есть ли способ иметь только один pixbuf для всего процесса и, следовательно, не вызывать gc?

Или я все делаю не так?

Спасибо заранее за любую помощь

Рафаель

код:

  def draw(self, drawArea):

        #init bmp loader
        loader = gtk.gdk.PixbufLoader ('bmp')

        #get a bmp buffer
        chart = drawArea.outBMP2()

        #load this buffer
        loader.write(chart)
        loader.close()

        #get the newly created pixbuf        
        pixbuf = loader.get_pixbuf()

        #and load it in the gtk.Image
        self.img.set_from_pixbuf(pixbuf)

        del pixbuf
        gc.collect()

1 Ответ

1 голос
/ 17 июня 2009

Вам не нужно вызывать сборщик мусора. Python автоматически собирает мусор. В конце вашего метода pixbuf выпадает из области видимости (вам также не нужно "del pixbuf") и будет автоматически собираться мусором. Поэтому для начала удалите последние две строки вашего метода.

Вы также можете просто реже вызывать метод 'draw', если он потребляет слишком много ресурсов процессора. Я полагаю, что в большинстве приложений пользователь может иметь дело с обновлениями каждые 200 мс, а не каждые 50, если каждые 50 мс означают, что возникнет проблема с процессором.

...