Forum: PC-Programmierung Schnell Pixel setzen mit Python


von Ole L. (olel)


Lesenswert?

Hallo,
ich bin auf der Suche nach einem Python-Modul mit dem ich möglichst 
schnell stumpf Pixel in einem Fenster setzen möchte. Ich habe es schon 
mit Pygame versucht, allerdings ist das viel zu langsam. Ich bräuchte am 
besten so nach 10-50 Millisekunden ein ausgefülltes Fenster. Da sich 
allerdings die Farbe verändert kann ich nicht blos ein großes Rechteck 
zeichnen.

Kennt da jemand was besseres, schnelleres?

Grüße OleL

von Bernd K. (prof7bit)


Lesenswert?

Ole L. schrieb:
> Ich bräuchte am
> besten so nach 10-50 Millisekunden ein ausgefülltes Fenster.

Ich würde so aus dem Bauch raus mal sagen daß enge Schleifen (Millionen 
von Iterationen aber nur triviales zu tun in jeder einzelnen Iteration, 
nun dann das ganze noch zeitkritisch) nicht unbedingt die Domäne einer 
interpretierten Hochsprache sind.

Ich würde diesen einen Teil des Programms (also die ganze Schleife von 
oben links bis unten rechts) lieber komplett in C schreiben und DAS 
dann von Python aus einbinden/aufrufen.

: Bearbeitet durch User
von Stefan S. (Gast)


Lesenswert?

Mit interpretierten Sprachen wie Python sieht das schlecht aus. Da liegt 
doch jede elementare Aktion, wie etwa eine Wertzuweisung an eine 
Variable, im Bereich von etwa einer Mikrosekunde. Bei einem Fenster mit 
10e6 Pixel wärst Du ja dann schon bei einer Sekunde. Natürlich ist das 
Setzen eines Pixels weit aufwendiger, geschieht aber bei Benutzung einer 
geeigneten Bibliothek in Maschienencode. Problem sind also die einzelnen 
Aufrufe aus Python. Wenn die Daten im vorherein bekannt sind, könntest 
Du natürlich Arrays übergeben. Aber du willst die Daten ja wohl 
irgendwie dynamisch erzeugen wollen, und da hast Du dann wieder ein 
Problem. Muss es denn Python sein? Es gibt heute ja genügend schnellere 
und auch "schöne" Sprachen. Sonst eventuell Cython oder PyPy?

von Flugfrikadelle (Gast)


Lesenswert?

Und was das Ausgeben der Pixel angeht: Du müsstest in ein Array 
schreiben und das Ganze dann erst anzeigen. Das ist normalerweise die 
schnellste Methode. In SFML z.B. über LoadFromPixels().

von Yalu X. (yalu) (Moderator)


Lesenswert?

Wie werden die einzelnen Pixelfarbe berechnet? Ebenfalls in Python?

Wie lange dauert diese Berechnung für ein komplettes Bild (ohne die
Ausgabe in ein Fenster)? Weniger als 10 bis 50 ms?

von Rolf M. (rmagnus)


Lesenswert?

Die erste Frage ist, ob wirklich alle Pixel einzeln "von Hand" gesetzt 
werden müssen. Darunter kann ich mir wenig vorstellen:

Ole L. schrieb:
> Da sich allerdings die Farbe verändert kann ich nicht blos ein großes
> Rechteck zeichnen.

Generell muss man eher selten die Pixel einzeln zeichnen.

von Kaj (Gast)


Lesenswert?

Nimm PyQt, bearbeite eine Pixmap und male diese in ein Lable.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.