2

バッファにbmpイメージしか提供できないchartdrawerライブラリを埋め込もうとしています。

この画像を読み込んでいるので、新しく作成したpixbufで明示的にdeleteを呼び出してから、ガベージコレクターを呼び出す必要があります。

描画方法は50msごとに呼び出されます

ガベージコレクターの呼び出しは、実際にはCPUを消費します。

すべてのプロセスに対して1つのpixbufのみを使用して、gcを呼び出す必要がない方法はありますか?

それとも私はすべて間違っていますか?

助けが必要な場合は事前にThx

ラファエル

コード:

  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()
4

1 に答える 1

1

ガベージ コレクタを呼び出す必要はありません。Python は自動的にガベージ コレクションを実行します。メソッドの最後で、pixbufスコープから外れ (" " も必要ありませんdel pixbuf)、自動的にガベージ コレクションが行われます。まず、メソッドの最後の 2 行を削除します。

また、CPU の消費が多すぎる場合は、「draw」メソッドの呼び出し回数を減らすこともできます。ほとんどのアプリケーションでは、ユーザーは 50 ミリ秒ごとではなく 200 ミリ秒ごとに更新を処理できると思います。

于 2009-06-17T03:36:32.827 に答える