如何在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
.
.
.
看看我的事件循环有一个内隐循环,所以你想让你的事件循环的多个实例并行运行?你能产生我期望的结果吗?