2017-04-23 276 views
0

我對循環感到困惑。例如在python3中:GUI循環和另一個循環

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

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

當我使用這個,程序使用時,關於%110 CPU。但是當我使用的GUI工具包一樣Tkinter的:

import tkinter 

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

它使用約0.3%的CPU。我認爲兩者都是無限循環。我如何優化第一個代碼?

+0

你在while循環裏面有什麼? – Dashadower

+0

只是打印(「smt」)或幾行命令之間沒有區別。兩者都使用%94 - %110 - %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