我试图嵌入一个只能在缓冲区中提供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()
最佳答案
您不需要调用垃圾收集器。 Python是自动垃圾收集的。在方法的最后,pixbuf
超出范围(您也不需要“ del pixbuf
”),并且将自动进行垃圾回收。因此,对于初学者,请删除方法的最后两行。
如果它消耗过多的CPU,您可能还想减少调用它的“绘制”方法的次数。在大多数应用程序中,我假设用户每200ms而不是每50ms处理一次更新,如果每50ms意味着将会出现CPU问题。
关于python - pygtk仅在一个pixbuf中加载图像流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1002841/