如何在 python > 3.8 中实现计划函数的并行启动,但使用不同的参数,以便脚本不绑定到操作系统的版本?
下面是一个示例配置文件。python 脚本将读取配置,然后根据配置中指定的频率,它应该以并行模式运行具有指定参数的 fnc 函数。例如,如果用户在 config 中指定了参数 1m, 1h, 1d,那么在每天的 00:00:00,具有参数 fnc(timeframe = 1m), fnc(timeframe = 1h), fnc( timeframe = 1d) 应该并行执行。如何以最优化和正确的方式实现给定的功能?
.ini 文件
1m:fnc(timeframe = 1m)
5m:fnc(timeframe = 5m)
1h:fnc(timeframe = 1h)
4h:fnc(timeframe = 4h)
1d:fnc(timeframe = 1d)
1w:fnc(timeframe = 1w)
例如,您可以依靠单调的计时器
asyncio进行concurrent.futures.Executor并行化。在我的电脑上,时钟的延迟结果在 0.003-0.060 秒的范围内
get_crontab - 将示例文本中的格式转换为列表:间隔、函数、参数、值。
pool 是 5 个线程,它们几乎同时运行这些函数。
ProcessPoolExecutor如果要跨所有内核卸载,请替换为。loop 是一个异步循环,在这种情况下,它从系统内核接收单调定时器信号。
调度程序 - 首先安排自己在下一分钟的 00 秒执行。然后它将执行列表中应在当前分钟内执行的功能。
pool.submit - 在池线程之一中并行运行该函数。
竞争选项(不是并行的,而是异步的)
选项通过
time.sleep和multiprocessing