pygtk在一个pixbuf中加载一系列图像
我正在尝试使用一个只能给我提供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出现问题。