尚未测试,但我认为这可能会奏效:与其使用sleep,不如创建一个condition object并使用它的wait()方法。在
创建一个Timer对象,该对象在超时时调用condition对象的notify()方法。在
如果要更改睡眠时间,只需丢弃旧计时器(使用cancel()方法),然后创建一个新计时器。在
*更新*
我刚测试过这个,效果很好。在
这是进程中的wait(),不要先伪造获取它。在def process(condition):
condition.acquire()
condition.wait()
condition.release()
这是唤醒函数,从主进程调用:
^{2}$
以及在创建进程时(在main或其他函数中)创建并传递condition对象:condition=multiprocessing.Condition(multiprocessing.Lock())
p=multiprocessing.Process(target=process, args=(condition,))
p.start()
创建计时器(此计时器线程将在主进程上创建):timer=threading.Timer(wake_up_time, wake_up, args(condition,))
start_time=time.time()
timer.start()
如果您想更改时间,只需停止它并创建新的计时器:timer.cancel()
elapsed_time=time.time-start_time
timer=threading.Timer(new_wake_up_time-elapsed_time, wake_up, args(condition,))
timer.start()