pygtk只在一个pixbuf中加载图像流

时间:2009-06-16 17:18:09

标签: python pygtk

我正在尝试嵌入一个只能在缓冲区中为我提供bmp图像的chartdrawer库。

我正在加载此图像,必须在新创建的pixbuf上显式调用delete,然后调用垃圾收集器。

每50ms调用一次绘图方法

调用垃圾收集器实际上是CPU消耗。

有没有办法让所有进程只有一个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 个答案:

答案 0 :(得分:1)

您无需调用垃圾收集器。 Python会自动进行垃圾回收。在方法结束时,pixbuf超出范围(您也不需要“del pixbuf”)并将自动进行垃圾回收。所以对于初学者来说,删除你方法的最后两行。

如果它耗费太多CPU,你可能也想要更少地调用你的'draw'方法。在大多数应用程序中,我想用户可以每200毫秒而不是每50毫秒处理一次更新,如果每50毫秒意味着会出现CPU问题。