在我的程序 ( Python 3.5
) 中,我想在某个时间执行一个函数,而不管它处于代码的哪个阶段。但是我不知道有任何语句一直检查(甚至在程序过程中)现在是什么时间以及是否是例如 13:15 来执行该功能。Awhile
不会工作,因为它总是在执行循环而不是执行程序。有什么解决办法吗?
我的操作系统是 Windows 7 Ultimate。
在我的程序 ( Python 3.5
) 中,我想在某个时间执行一个函数,而不管它处于代码的哪个阶段。但是我不知道有任何语句一直检查(甚至在程序过程中)现在是什么时间以及是否是例如 13:15 来执行该功能。Awhile
不会工作,因为它总是在执行循环而不是执行程序。有什么解决办法吗?
我的操作系统是 Windows 7 Ultimate。
一种可能的解决方案是实现一个线程来执行一个计时器,并在满足条件时执行该函数。这样主线程就可以毫无问题地继续运行。
这是一个实现示例。该代码有注释以阐明正在做什么和一个使用示例。
测试代码输出:
由于代码有很多注释和标准输出,我留下了一个“干净”的版本,它只包含类
Temporizador
,没有控制台进度信息:只要线程处于活动状态,该函数就会每天在那时执行,直到使用
stop()
. 当您要结束程序时,请先使用此方法确保线程正确结束。所有模块都属于
Python
(datetime,time,threading)的标准库,并且代码也无需修改即可工作Python 2.7
。如果您需要在定时线程和主程序中处理的内容之间共享信息,请使用一些安全的线程间通信方法,例如队列 ( Queue )。