我试图嵌入一个只能在缓冲区中提供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/

10-09 17:09