Python 在每个块中使用特定的分钟数协调线程计时器

Python 在每个块中使用特定的分钟数协调线程计时器,python,multithreading,time,Python,Multithreading,Time,我是一个完全不懂线程的人,因此,如果这是一件小事,我深表歉意——我在这个问题上找不到任何解决方案 假设我有一个函数f() 我希望在初始调用时执行,以及在初始调用后每10分钟块的第3分钟和第8分钟执行如何设置线程 我知道如果我想在初始调用后每五分钟执行一次函数,我可以做如下操作 import threading def f(): print('do the useful things!') threading.Timer(60*5, f).start() 但我很难评估我如何能轻

我是一个完全不懂线程的人,因此,如果这是一件小事,我深表歉意——我在这个问题上找不到任何解决方案

假设我有一个函数
f()

我希望在初始调用时执行,以及在初始调用后每10分钟块的第3分钟和第8分钟执行如何设置线程

我知道如果我想在初始调用后每五分钟执行一次函数,我可以做如下操作

import threading

def f():
    print('do the useful things!')
    threading.Timer(60*5, f).start()
但我很难评估我如何能轻松地将计时与第3分钟和第8分钟对齐。实际上,这只需要调整下一次执行——也就是说,如果我最初在8:01调用函数,那么我的任务只是确保下一次执行在8:03,之后的执行将在8:08、8:13等等。。(使用
线程。计时器时,这很容易)


一种看似“黑客”的解决方案是使用一个标志来识别第一个函数调用——当函数第一次被调用时,获取当前分钟与即将到来的第三或第八分钟之间的差值<代码>时间。睡眠
这一差异,然后使用
线程。计时器
。问题是
time.sleep
会阻止我整个进程的执行-这需要在另一个线程上执行。感觉在这里使用
线程.Timer
比构建自己的线程类更容易,但我不确定

使用计时器事件执行您的功能(例如每5秒一次)。第一次通过计时器事件执行您的功能,无论发生什么,在每个后续事件上测试您的第3或第8分钟的时钟时间。如果是正确的时间,请执行该功能。否则,退出计时器事件并等待再次输入。确保您在事件中输入了一个标志,以防计时器事件在您完成处理最后一个事件之前触发。退出计时器事件代码时,清除输入的标志。

请看:@ΦXocę웃Пepeúpaツ 我会的,谢谢。您只需将sleep time参数传递到线程函数中,然后运行time.sleep以获得该时间
import threading

def f():
    print('do the useful things!')
    threading.Timer(60*5, f).start()