我将有64个相似的任务。他们都需要每5分钟跑一次。但是,我不希望它们同时运行。现在我有64个这样的:
*/5 * * * * root python script1.py
有没有一种方便的方法让每4秒运行一次?或者我应该使用一个大的.sh脚本吗?
答案 0 :(得分:1)
你可以这样做的一种方法(至少在python中)如下:
import time
import subprocess
tasks = ["task1.py", "task2.py", ..., "task64.py"]
for t in tasks:
subprocess.call(["python", task], shell=True)
time.sleep(4)
但是,这假设每个任务在不到一秒的时间内完成,可能不是这种情况(取决于每个任务的复杂性)。那么,你可能想要在这个问题上抛出多处理,这样就可以让每个任务在最后一个任务后4秒开始,但只要需要就运行:
import multiprocessing as mp
import time
import subprocess
def caller(task, wait):
time.sleep(wait)
subprocess.call(['python', task], shell=True)
tasks = ["task1.py", "task2.py", ..., "task64.py"]
for t,task in enumerate(tasks):
p = mp.Process(target=caller, args=(task,t*4))
p.join()
这样,每个任务在最后一个任务后约4秒开始。但是,你所拥有的任务越多,这种近似值就会越接近精确的4秒间隔(特别是在后面的任务中)