pygtk在一个pixbuf中加载一系列图像

2 投票
1 回答
633 浏览
提问于 2025-04-15 12:17

我正在尝试使用一个只能给我提供bmp格式图片的图表绘制库。

我加载这个图片后,需要手动删除新创建的pixbuf,然后再调用垃圾回收器。

这个绘图方法每50毫秒就会被调用一次。

调用垃圾回收器真的很耗CPU资源。

有没有办法只使用一个pixbuf,这样就不需要调用垃圾回收器了?

还是说我做错了什么?

提前感谢任何帮助。

Raphaël

代码:

  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

你不需要手动去调用垃圾回收器。Python会自动处理垃圾回收。在你的方法结束时,pixbuf就会超出作用域(你也不需要写"del pixbuf"),它会被自动回收。所以,首先把你方法最后的两行代码删掉吧。

如果你发现你的'draw'方法消耗了太多的CPU资源,你可能想要减少调用这个方法的频率。在大多数应用中,我想用户每200毫秒更新一次也能接受,而不是每50毫秒更新一次,因为每50毫秒更新可能会导致CPU出现问题。

撰写回答