创建一个周期性执行某项任务的线程非常简单,只需将其target
设置为如下函数:
minute = 60
nextTime = time.time()
while True:
Do_Some_Stuff()
nextTime += minute
sleep_time = nextTime - time.time()
if sleep_time > 0:
time.sleep(sleep_time)
但是。。。在某些情况下,如果我想让另一个线程在周期到期之前执行操作,该怎么办?你知道吗
我得出了以下结论:
Trigger = threading.Condition()
def loop():
while True:
Do_Some_Stuff()
with Trigger:
Trigger.wait(timeout=60)
如果我启动一个Thread
,而loop
是target
,它每分钟运行一次,除非我执行
Trigger.notify()
从别处来的。然后它就跑了。有没有更好的办法?我同时使用了Semaphore
和Event
实现,但是当我异步戳它们时,它们都起飞了。你知道吗
而真正让我困惑的是,我可能不只是戳它,而是戳它在未来的某个时刻。瞧,不管你现在在等什么,我希望下一个是5秒后的(我想我可以分叉另一个短生命线程,延迟5秒,然后驱动触发器)。你知道吗
我想我至少应该分享一下我的想法。我使用了来自
queue
模块的Queue
。下面是一些示例代码(旨在以交互方式运行):相关问题 更多 >
编程相关推荐