欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > python定时调度升级

python定时调度升级

2025/9/20 14:03:48 来源:https://blog.csdn.net/qq_44862918/article/details/146781025  浏览:    关键词:python定时调度升级

几年前其实有写过python定时调度的简易写法,比较简单直观。但是没有解决time.sleep有时会出现无法被唤醒的情况。time.sleep出现无法被唤醒的原因是在单线程中,资源由于被别的调度任务占用,所以会导致time.sleep任务异常。所以在使用time.sleep时,会建议单独起一个线程资源来执行time.sleep任务。解决方案如下:

import threading
import time
event = threading.Event()
def create_time():while True:# lock.acquire()time.sleep(3)event.set()# lock.release()def use_data():while True:# lock.acquire()event.wait()print(time.time())print(threading.activeCount())print(threading.current_thread())event.clear()# lock.release()t = threading.Thread(target=create_time)
t1 = threading.Thread(target=use_data)
t.start()
t1.start()

逻辑中被注释掉的部分,是用线程锁来实现的,同样可以解决调度任务,是没有问题的。在前边的文章中,其实还有提到使用队列来实现调度任务。这套解决方案的本质其实就还是信号方式。一边在计时,另外一边在等待信号,当接收到信号后,开始执行任务。目前从理论上来讲,一直想要替换掉time.sleep,但是又发现,定时任务执行信号的发起,一定是和时间挂钩的,所以可能无法被避免掉,如果看到本文的兄弟有更好的方案,可以私信互相学习一下。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词