Writing a lightweight background python script

The Raspberry Pi is a series of credit card-sized single-board computers developed in the United Kingdom by the Raspberry Pi Foundation to promote the teaching of basic computer science in schools and developing countries.

Post Reply
User avatar
/RaspberryPi
Corporate
Posts: 2449
Joined: Wed Jun 05, 2019 1:29 am

Writing a lightweight background python script

Post by /RaspberryPi »

I've written a couple very simple in/out python scripts in the past to do things like turn on an LED when a button is pushed or turn on a fan if the CPU temp is too high. I noticed that one I was using had really high CPU usage (like 18%) when it was running in the background, it just watched a GPIO pin to see when a button was pushed and then executed a shutdown command.
So my question is, what's considered good practice to write python scripts to run in the background? Say I just want to light an LED when CPU temps are high. I could do something really simple like:
while True:
if(tempsHigh == True)
ledON()
else
ledOFF()
This will check the temps as fast as possible, which, depending on what it's actually doing, can be quite intensive. I could add a time.sleep(1) in the loop so it only checks once per second, but how intensive is a sleep command? Is it just checking something else, like a timer, as fast as possible and still bogging down the CPU? I could make my own sleep function, something like this:
while True:
while(currentTime < targetTime) {
pass
}
targetTime = currentTime + 1
if(tempsHigh == True)
ledON()
else
ledOFF()
But then again I'm just checking the time as fast as possible.
Basically I just want to know what's the 'best' way to simple background scripts like this so they use as little resources as possible.
As far as 'do your own research' I've seen it done with and without sleep, with and without pass loops, etc, so maybe it's the case that it really doesn't matter. I'm sure I could figure it out myself by delving into exactly what a sleep does, how a pass works, how CPUs handle delays and threading and resources, etc, but that's more than I'm looking to learn at the moment.
Edit: IDK how to do code blocks on reddit...

submitted by /u/Darkextratoasty
[link] [comments]

More...
Post Reply

Return to “Raspberry Pi Forum”