I’ve just started learning Python today. I’ve been reading a Byte of Python. Right now I have a project for Python that involves time. I can’t find anything relating to time in Byte of Python, so I’ll ask you:
How can I run a block for a user specified amount of time and then break?
For example (in some pseudo-code):
time = int(raw_input('Enter the amount of seconds you want to run this: '))
while there is still time left:
#run this block
or even better:
import sys
time = sys.argv[1]
while there is still time left:
#run this block
I recommend spawning another thread, making it a daemon thread, then sleeping until you want the task to die. For example:
The Python interpreter will shut down when all non-daemon threads have exited. So when your main thread exits, if the only other thread running is your task that you are running in a separate daemon thread, then Python will just exit. This is a convenient way of running something in the background if you want to be able to just quit without worrying about manually causing it to quit and waiting for it to stop.
So in other words, the advantage which this approach has over using
sleepin a for loop is in that case you have to code your task in such a way that it’s broken up into discrete chunks and then check every so often whether your time is up. Which might be fine for your purposes, but it can have problems, such as if each chunk takes a significant amount of time, thus causing your program to run for significantly longer than what the user entered, etc. Whether this is a problem for you depends on the task you are writing, but I figured I would mention this approach in case it would be better for you.