使用pythonsched模块和enterabs使函数在特定时间运行

使用pythonsched模块和enterabs使函数在特定时间运行,python,scheduler,Python,Scheduler,我似乎找不到一个简单的例子来说明如何在Python中安排事件 我希望能够将日期和时间字符串作为参数传递到函数中 例如: 字符串:“m/d/Y HH:MM”将设置代码执行后未来函数运行的时间。所以,就像一个函数,在我运行它之后,它正等待关闭 看起来主要的问题是正确地格式化字符串,但是一个简单的示例确实有助于了解如何“安排”函数运行。您没有提供足够的上下文来理解您在更大的框架中要做什么,但是,一般来说,Python中“这不是它的工作方式” “普通”Python程序是一个单线程的同步程序——它将运行一

我似乎找不到一个简单的例子来说明如何在Python中安排事件

我希望能够将日期和时间字符串作为参数传递到函数中

例如:

字符串:“m/d/Y HH:MM”将设置代码执行后未来函数运行的时间。所以,就像一个函数,在我运行它之后,它正等待关闭


看起来主要的问题是正确地格式化字符串,但是一个简单的示例确实有助于了解如何“安排”函数运行。

您没有提供足够的上下文来理解您在更大的框架中要做什么,但是,一般来说,Python中“这不是它的工作方式”

“普通”Python程序是一个单线程的同步程序——它将运行一个任务,一个接一个,一个接一个,当所有事情都完成后,程序退出,解释器也随之退出

因此,伴随着(一个虚构的“时间表”功能):

如果对schedule的调用立即返回,则在Python中不起作用-main函数将退出,程序将在
main()
调用后尝试恢复并终止。需要有一段代码保持运行,它可以计算时间和延迟,可能接收网络或用户生成的事件,并将它们分派给先前安排的回调函数,以便程序继续运行

这样一段代码,可以解释时间和分派调用,通常被称为“反应器”——在普通Python程序中没有运行。与JavaScript程序不同,在JavaScript程序中,默认情况下浏览器或其他JavaScript环境提供此类托管

这就是为什么大多数Python web或网络框架(所有GUI工具包)都提供了这样一个核心——它通常在一个main脚本的末尾调用,是一个名为
mainloop
永远服务
开始
等的方法或函数。从那时起,您的主脚本(设置了适当的回调、计划的事情等等)停止了—reactor将是调用事情的代码

这就是为什么我说你的问题忽略了你想做的事情的背景:起初你只是想测试一些日程安排——但之后你会希望在一个更大的系统中进行测试——该系统应该使用适合你手头“真正任务”的框架来构建,例如Django、tornado、pyramid,如果它是一个web服务器系统,gtk、Qt、Tk(如果是GUI程序)、PyOgre、kivy、pyglet(如果是多媒体程序)、twisted(为另一个协议的通用网络服务器)或其他东西(如芹菜或camaelia)——这些只是一般示例

这就是说,Python的标准库确实提供了一个“通用”调度程序函数——它确实实现了这样一个循环,只提供了核心功能。如果您不做任何其他事情,也不做任何花哨的事情,它将在那里阻塞,直到到达调用预定函数的时间,此时它将退出,并恢复对主程序的控制。如果您调用的函数安排了其他事情,它将继续运行,以此类推

请参阅以下位置的文档和示例:

您可以使用datetime模块中的函数,而不是time.time,根据需要设置r绝对计时。另外,还可以查看threading.Timer的文档。如果您希望在给定的延迟后运行简单的函数,与其他正在运行的代码并行运行,并且不希望将应用程序重写为基于事件的,那么threading.Timer可以以一种天真的方式或多或少地完成您所想的任务,但是可以看到它更简单,在一个更大的系统中,它会有很多缺点——您应该选择列出的框架之一

def main():
    print("Hello World")
    schedule(60, main)

main()