Python - 运行 脚本定期

Python - Run script periodically

现在我有一些脚本,我想 运行 自动定期执行,比如说,每两天执行一次。

我构建的方式看起来像这样。

脚本 1:

def example1():
    #Some Selenium code

example1()

脚本 2:

def example2():
    #Some more Selenium code

example2()

脚本 3:

import Script1
import Script2

你会注意到,'Script1' 和 'Script2' 已经调用了它们的主要函数,所以在 'Script3' 中我只需要导入脚本,而不是调用函数(尽管这对我有用,我不确定这是否是一种安全的 approach/good 做法)。

我的问题:如果我每隔 x 天使用 schedule 到 运行 'Script3',这是否意味着脚本将永远 运行,或者它是否每 x 天 运行 一次,然后进入睡眠模式直到它必须再次 运行?另外,为了 运行 需要 PC 始终开启,对吗?

如果是这样,有什么方法可以使它 运行 自动并定期即使在 PC 关闭的情况下?

提前致谢!

如果您使用的是 Linux 或任何其他基于 Unix 的 OS,那么您可以使用 Cron 进行作业调度。但是,如果您在 cron 作业正在 运行ning 时关闭,系统将关闭并且 cron 作业停止(或者不 运行)。

您可以检查的另一种选择是 anacron。

我想 Windows 调度程序的工作方式与 linux 中的 cron 作业相同。所以实际上在创建 "task" 之后,windows 每秒检查一次以查看他是否必须执行任何任务。但这是一直在做的,所以如果你担心的话,这对性能没有影响。然后澄清一下:

  1. Windows看到批处理文件被调度并按时执行。
  2. Windows执行批处理文件中的python脚本,脚本完成。
  3. Windows 不断检查调度程序,但脚本 "died".
  4. 的进程

对于即使关闭 PC 也能做到这一点,这是不可能的。

I'm not sure whether this is a safe approach/good practice

Python 的禅宗说; "Explicit is better than implicit." 所以最好使用:

 import script1
 import script2

 script1.example1()
 script2.example2()

通常不建议模块在导入时使用 运行 代码。导入模块最好不要有副作用。

if I use schedule

可能不止一个名为"schedule"的程序。能具体点吗?

is there any way to make it run automatically and periodically even with the PC turned off

定期 运行 脚本的方法不止一种。 Linux 类 UNIX 系统有 cronatrun。 其他系统有自己的方式。

但所有这些仅在机器 开启 时才有效。在没有额外硬件的 PC 上,通常不可能定期打开机器。除非你能让 Intel Management Engine 执行你的命令。

ESP32 等微控制器(可以 运行 micropython)确实具有用于此目的的 "deep-sleep" 模式,但我有点怀疑它们是否可以 运行 selenium。 :-)