I have struggled with this question for about a week -- time to ask someone who can bang out an answer in a couple minutes.
I am trying to run a python program once every 10 seconds. There are a lot of questions of this sort : Use sched module to run at a given time, Python threading.timer - repeat function every 'n' seconds, How to execute a function asynchronously every 60 seconds in Python?
Normally the solutions using sched or time.sleep would work, but I am trying to start a scheduled process from within cmd2, which is already running in a while False loop. (When you exit cmd2, it exits this loop). 
Because of this, when I start a function to repeat every 10 seconds, I enter another loop nested within cmd2 and I am unable to enter cmd2 commands. I can only get back to cmd2 by exiting the sub-loop that is repeating the function, and thus the function stops repeating. 
Evidently threading will solve this problem. I have tried threading.Timer without success. Perhaps the real problem is that I do not understand threads or multiprocessing. 
Here is an example of code that is roughly isomorphic to the code I'm using, using sched module, which I got to work: 
    import cmd2
    import repeated
    class prompt(cmd2.Cmd):
    """this lets you enter commands"""
        def default(self, line):
            return cmd2.Cmd.default(self, line)
        def do_exit(self, line):
            return True
        def do_repeated(self, line):
            repeated.func_1() 
Where repeated.py looks like this:
    import sched
    import time
    def func_2(sc):
        print 'doing stuff'
        sc.enter(10, 0, func_2, (sc,))
    def func_1():
        s = sched.scheduler(time.time, time.sleep)
        s.enter(0, 0, func_2, (s,))
        s.run()
 
     
    