2017-04-23 12 views
0

。たとえば、python3の場合:GUIループと私は、ループについて混乱して別のループ

import pygame 
pygame.init() 
.... 
.... 

while True: 
    .... 
    .... 
    pygame.display.update() 

これを使用すると、約%110 CPUを使用します。しかし、私はtkinterのようなGUIツールキットを使用するとき:

import tkinter 

root = tkinter.Tk() 
.... 
.... 
.... 
root.mainloop() 

これは約%0.3のCPUを使用しています。私は両方とも無限ループだと思う。どのようにして最初のコードを最適化できますか?

+0

あなたは、whileループ内で何をしますか? – Dashadower

+0

print( "smt")または数行のコマンドには違いはありません。 110% - - の両方が94%使用されている120%等 – RichardBrook

答えて

1

主な違いは、典型的なGUIツールキットが新しいイベントの到着をブロックするのを待ち、描画操作を含むループ本体がそのようなイベントに反応して実行されることです。

典型的なゲームループは、イベントが到着するのを待つことはありません。シミュレーションが行われているため、継続的に更新してからディスプレイを更新する必要があります。

I.e. Pygameループは、できるだけ多くのCPUサイクルを使い、最もスムーズなシミュレーションを行うように設計されています。しかし、tkinterループは、システムリソースを節約するためにできるだけ多くのCPUサイクルを費やすように設計されています。

+0

をので、この使用は正常で、これはないですか? – RichardBrook

+0

@RichardBrook:これは期待されています。もちろん、pygameのイベントもいつでも待つことができます:https://www.pygame.org/docs/ref/event.html#pygame.event.wait – datenwolf

関連する問題