Höhere Auslastung mit gpiozero im Vergleich zu RPi

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten Morgen Zusammen,

    Mein Script ist jetzt von RPi auf gpiozero umgestellt. Und wie Manul es prophezeit hat, wurde der saure Apfel süß, zumindest am Anfang, dann kam der vergammelte Kern ^^ Spaß bei Seite, von der Nutzung her ist gpiozero echt klasse, allerding liegt die CPU-Auslastung bei Ausführung des Scriptes nun bei fast durchgängig 100%. Verwende ich RPi liegt die Auslastung lediglich bei 12%. Bei dem Script handelt es sich bisher lediglich um eine Menü für ein OLED-Display, welches in Zukunft unter anderem um eine Stepper-Motor-Steuerung erweitert werden soll.

    Die Scripte habe ich als Anhang drangehängt, da die Nachricht sonst über 50.000 Zeichen kommt ;)

    Grundsätzlich möchte ich eigentlich gerne gpiozero weiter verwenden, werde aber wieder auf RPi umstellen sollte sich die CPU-Auslastung nicht deutlich (auf <20%) reduzieren lassen. Davon abgesehen, dass ich mir nicht vorstellen kann, dass die dauerhafte CPU-Auslastung gut für die Langlebigkeit des Pis ist, muss ich vorallem auf einen möglichst geringen Energieverbrauch des Pis achten. Er wird später mit einer Powerbank etc. betrieben vor allem für Shoot-Move-Shoot-Bewegungen bei Zeitraffern verwendet. Meine Frage ist jetzt, habe ich bei der Verwendung von gpiozero etwas falsch gemacht? Was kann optimiert werden?:helpnew::denker:

    Vielen Dank im Voraus! :danke_ATDE:

    Viele Grüße

    BrainPain

  • Höhere Auslastung mit gpiozero im Vergleich zu RPi? Schau mal ob du hier fündig wirst!

  • Guten Morgen,

    Problem erledigt. Nun ist der saure Apfel süß 8) Vielen Dank Hofei!!!

    Interessant ist aber, dass das Script statt ca. 1 Sekunde nun etwa 4 Sekunden zum laden braucht. Die Performance scheint also zumindest beim Start schlechter zu sein. Finde das in diesem Fall zwar nicht wirklich schlimm, aber falls jemand weiß warum wäre ich interessiert. (Stelle den Thread trotzdem als erledigt ein, da meine eigentliche Frage beantwortet wurde.)

    Gruß

    BrainPain

  • Hallo,

    gpiozero sucht beim Starten erstmal nach diversen Backends für die "Pin Factory" (https://gpiozero.readthedocs.io/en/stable/api_pins.html). Das kann halt ein bisschen dauern. Plus gpiozero arbeitet ja auf einem höheren Abstraktionslevel als RPi.GPIO, d.h. es wird beim Start sicherlich mehr Code ausgeführt als bei RPi.GPIO.

    Wenn du es genau(er) wissen willst, muss du einfach mal den Profiler von Python mitlaufen lassen:

    Python
    >>> import cProfile
    >>> cProfile.run('import gpiozero')

    Dann bekommst eine (eventuelle sehr lange) Liste, wo aufgeschlüsselt ist, was wie lange braucht.

    Gruß, noisefloor

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!