Running a Command Repeatedly
Credit: Philip Nunez
Problem
You need to run a command repeatedly, with arbitrary periodicity.
Solution
The
time.sleep
function
offers a simple approach to this task:
import time, os, sys, string
def main(cmd, inc=60):
while 1:
os.system(cmd)
time.sleep(inc)
if _ _name_ _ == '_ _main_ _' :
if len(sys.argv) < 2 or len(sys.argv) > 3:
print "usage: " + sys.argv[0] + " command [seconds_delay]"
sys.exit(1)
cmd = sys.argv[1]
if len(sys.argv) < 3:
main(cmd)
else:
inc = string.atoi(sys.argv[2])
main(cmd, inc)Discussion
You can use this recipe with a command that periodically checks for
something (e.g., polling) or performs an endlessly-repeating action,
such as telling a browser to reload a URL whose contents change
often, so you always have a recent version of that URL up for
viewing. The recipe is structured into a function called
main
and a body that is preceded by the usual if _ _name_ _=='_ _main_ _': idiom, which ensures that the body executes only
if the script runs as a main script. The body examines the
command-line arguments you used with the script and calls
main appropriately (or gives a usage message if
there are too many or too few arguments). This is always the best way
to structure a script, so its key functionality is also available to
other scripts that may import it as a module.
The main function accepts a cmd string, which is a command you should pass periodically to the operating system’s shell, and, optionally, a period of time in seconds, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access