Python - 每 10 分钟暂停整个脚本
Python - Pause entire script every 10 minutes
需要一种方法让脚本先暂停 运行 10 分钟后再暂停 2 分钟,然后让此过程自行重复。我需要脚本本身在 10 分钟内继续 运行ning。
我尝试使用线程,但发现它实际上并没有暂停脚本的其余部分。
编辑:添加代码以提供视角。希望这有助于解释我的问题。
您的代码有一个很好的循环,您可以在其中植入暂停,如下所示:
from datetime import datetime, timedelta
...
def start():
lastsleep = datetime.now() # <-- new
while True:
openBank()
gear()
invCheck()
timer = random.uniform(33, 37)
print("Sleep time: %s" % timer)
time.sleep(timer)
if (datetime.now() - lastsleep) > timedelta(minutes=10): # <-- new
time.sleep(2*60)
lastsleep = datetime.now()
请注意,它不会在 10 分钟后恰好休眠,而是在 10 分钟结束并到达检查点时休眠。这可能是 10:12 或 13:47 分钟,具体取决于其他代码(openBank()
、gear()
等)之前执行的操作。
显示代码前的回答:
问题是:我们没有关于您的代码的信息。
如果你有
something = getSomething()
something.DoSomeVeryExpensiveOperation() # takes 25 minutes
没有什么好的方法可以在 10 分钟后中断或暂停该方法。
我能想到的通用方法的唯一方法是这样的:
- 使用多处理
- 从外部监控流程
- 10分钟后,挂起进程的所有线程
- 睡2分钟
- 恢复进程的所有线程
在你这样做之前,你应该知道why you should never suspend a thread
需要一种方法让脚本先暂停 运行 10 分钟后再暂停 2 分钟,然后让此过程自行重复。我需要脚本本身在 10 分钟内继续 运行ning。
我尝试使用线程,但发现它实际上并没有暂停脚本的其余部分。
编辑:添加代码以提供视角。希望这有助于解释我的问题。
您的代码有一个很好的循环,您可以在其中植入暂停,如下所示:
from datetime import datetime, timedelta
...
def start():
lastsleep = datetime.now() # <-- new
while True:
openBank()
gear()
invCheck()
timer = random.uniform(33, 37)
print("Sleep time: %s" % timer)
time.sleep(timer)
if (datetime.now() - lastsleep) > timedelta(minutes=10): # <-- new
time.sleep(2*60)
lastsleep = datetime.now()
请注意,它不会在 10 分钟后恰好休眠,而是在 10 分钟结束并到达检查点时休眠。这可能是 10:12 或 13:47 分钟,具体取决于其他代码(openBank()
、gear()
等)之前执行的操作。
显示代码前的回答:
问题是:我们没有关于您的代码的信息。
如果你有
something = getSomething()
something.DoSomeVeryExpensiveOperation() # takes 25 minutes
没有什么好的方法可以在 10 分钟后中断或暂停该方法。
我能想到的通用方法的唯一方法是这样的:
- 使用多处理
- 从外部监控流程
- 10分钟后,挂起进程的所有线程
- 睡2分钟
- 恢复进程的所有线程
在你这样做之前,你应该知道why you should never suspend a thread