我正在尝试嵌入一个只能在缓冲区中为我提供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()
答案 0 :(得分:1)
您无需调用垃圾收集器。 Python会自动进行垃圾回收。在方法结束时,pixbuf
超出范围(您也不需要“del pixbuf
”)并将自动进行垃圾回收。所以对于初学者来说,删除你方法的最后两行。
如果它耗费太多CPU,你可能也想要更少地调用你的'draw'方法。在大多数应用程序中,我想用户可以每200毫秒而不是每50毫秒处理一次更新,如果每50毫秒意味着会出现CPU问题。