如何在Python中按间隔时间重置循环

如何在Python中按间隔时间重置循环,python,python-2.7,event-loop,Python,Python 2.7,Event Loop,假设我希望按间隔时间重新启动事件循环,如下所示: from time import sleep def event_loop(): print('Restart') while True: # Note :: This is an indefinite loop # Process some stuff. print("I'm a process") sleep(1) magic_tool(interval_time=5, fu

假设我希望按间隔时间重新启动事件循环,如下所示:

from time import sleep

def event_loop():
    print('Restart')
    while True: # Note :: This is an indefinite loop
        # Process some stuff.
        print("I'm a process")
        sleep(1)

magic_tool(interval_time=5, func=event_loop)
预期结果:

Restart
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
Restart
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
Restart
I'm a process
.
.
.
Restart
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
Restart
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
Restart
I'm a process
I'm a process
.
.
.

我读到了关于
twisted
threading.Time
apscheduler.scheduler
的文章,但我做不到

我想我可以通过
async.timeout.timeout()
来实现,但我正在使用Python2.7

尝试以下方法:

import threading 

def event_loop():
    print("do_something") 

some_flag=True
while some_flag:
    timer = threading.Timer(2.0, event_loop) 
    timer.start() 

我找到了创建可停止线程的解决方案:

import threading
import time

class TimerClass(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.event = threading.Event()

    def run(self):
        print('Restart')
        while True and not self.event.is_set():
            print("I'm a process")
            self.event.wait(1)

    def stop(self):
        self.event.set()

try:
    while True:
        tmr = TimerClass()
        tmr.daemon = True
        tmr.start()
        time.sleep(5)
        tmr.stop()

except KeyboardInterrupt:
    pass
预期结果:

Restart
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
Restart
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
Restart
I'm a process
.
.
.
Restart
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
Restart
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
I'm a process
Restart
I'm a process
I'm a process
.
.
.

看看我的事件循环有一个内隐循环,所以你想让你的事件循环的多个实例并行运行?你能产生我期望的结果吗?