multiprocessing/threading mit pygame
Verfasst: Freitag 1. Juli 2011, 17:25
Folgendes, mittlerweile lässt sich meine GUI Version 0.0.5 ganz gut anschauen. Hat aber das Problem das gerademal 8-9 fps bei voller Auslastung eines 1 GHz Kerns erreicht werden können und das bei einem relativ kleinen Testprogramm. Der Haupteil der Leistung wird für das "blitten" benötig, also habe ich ein Redraw-System eingeführt. Die GUI muss also das Neuzeichnen eines Widgets erst freigeben sonst wird einfach nur das Widget selbst "geblittet".
Dieses Sytem funktioniert schon ganz gut und ich komme jetzt in der Version 0.0.6, bei einer kleinen GUI auf 5-10% Auslastung des Kernes bei einer Beschränkung auf 30 fps - theoretisch ist der Wert bei der momentanen Test-Datei bis zu 300 fps möglich. Ich gehe aber davon aus das man bei Spielen etwas Größer GUIs braucht, wenn es sich nicht nur um ein Startmenü handelt. Daher schätze ich später Auslastungen zwischen 20-30% bei 30fps. (Achja, das die Zahlen relativ sind ist mir bewusst
, sie sollen das nur ein wenig veranschaulichen.)
Mein Problem sehe ich nun bei der Nutzung der GUI in einem Spiel. Da Spiele in Python doch den Ruf habe etwas mehr Leistung zu benötigen als andere, Spiele der selben Art und ich auch schon etwas Erfahrung gemacht habe wo ein paar Engpässe liegen, ist so eine zusätzliche GUI schon eine Belastung von so einem Spiel. Dazu kommt auch noch der GIL. Das sind dann doch schon grobe Einschränkungen.
Meine Frage nun ist es z.B. möglich die GUI und das Spiel zwar im selben Fenster laufen zu lassen aber in getrennten Prozessen. Sprich das die GUI immer einen extra Prozess zugeordnet bekommt ohne das sich der Entwickler des Spiels damit auseinander setzen muss.
Mein Wunsch wäre halt auch noch die anderen Kerne mit Nutzen zu können um die Performance des Spieles an sich zu heben. Ich bin natürlich auch für jegliche andere Möglichkeiten offen das zu verbessern. Mein Ziel ist es am Ende ein flüssiges Ergebnis bei ca. 30-35 fps zu erhalten.
Dieses Sytem funktioniert schon ganz gut und ich komme jetzt in der Version 0.0.6, bei einer kleinen GUI auf 5-10% Auslastung des Kernes bei einer Beschränkung auf 30 fps - theoretisch ist der Wert bei der momentanen Test-Datei bis zu 300 fps möglich. Ich gehe aber davon aus das man bei Spielen etwas Größer GUIs braucht, wenn es sich nicht nur um ein Startmenü handelt. Daher schätze ich später Auslastungen zwischen 20-30% bei 30fps. (Achja, das die Zahlen relativ sind ist mir bewusst

Mein Problem sehe ich nun bei der Nutzung der GUI in einem Spiel. Da Spiele in Python doch den Ruf habe etwas mehr Leistung zu benötigen als andere, Spiele der selben Art und ich auch schon etwas Erfahrung gemacht habe wo ein paar Engpässe liegen, ist so eine zusätzliche GUI schon eine Belastung von so einem Spiel. Dazu kommt auch noch der GIL. Das sind dann doch schon grobe Einschränkungen.
Meine Frage nun ist es z.B. möglich die GUI und das Spiel zwar im selben Fenster laufen zu lassen aber in getrennten Prozessen. Sprich das die GUI immer einen extra Prozess zugeordnet bekommt ohne das sich der Entwickler des Spiels damit auseinander setzen muss.
Mein Wunsch wäre halt auch noch die anderen Kerne mit Nutzen zu können um die Performance des Spieles an sich zu heben. Ich bin natürlich auch für jegliche andere Möglichkeiten offen das zu verbessern. Mein Ziel ist es am Ende ein flüssiges Ergebnis bei ca. 30-35 fps zu erhalten.