每隔x分钟暂停一次循环

时间:2016-06-03 03:01:59

标签: python

如何创建一个每X分钟随机休息一次的循环,其中X也是一个随机的持续时间?

我还希望能够指定两次随机持续时间的上限和下限。

4 个答案:

答案 0 :(得分:1)

你可以尝试这个

<td>

答案 1 :(得分:0)

import ftplib
import hashlib
import httplib
import pytz
import datetime

localtime = datetime.datetime.now(pytz.timezone('Asia/Singapore')).isoformat()
cam = "hi5"
lscam = localtime + cam
ftp = ftplib.FTP('localhost','username','password')
ftp.cwd('Server')
m=hashlib.md5()
file = open('Desktop/frame00000.png','rb')
m.update(lscam)
dd=m.hexdigest()
ftp.storbinary('STOR '+dd, file)
file.close()
ftp.quit()

显然可以适应一个功能,但这很有效

答案 2 :(得分:0)

你可以试试这个:

import datetime
import time
import random

sleep_duration = 60

previous_sleep = datetime.datetime.now()

random_offset = random.randint(-5, 5)

while(True):

    delta = (datetime.datetime.now() - previous_sleep).total_seconds()

    if delta < 60 * (20 + random_offset):
        # Do stuff
        time.sleep(1)
        continue
    else:
        previous_sleep = datetime.datetime.now()
        random_offset = random.randint(-5, 5)
        time.sleep(sleep_duration)

该程序每15-25分钟睡眠60秒,具体取决于计算的随机偏移量。

答案 3 :(得分:0)

这是一个使用datetime.now()timedelta来计算下一个间隔的示例代码,这有点优于使用time.time或类似的,因为这会在午夜失败,因为在这种情况下,日期也很重要:

import time
import random
import datetime

sleep_duration = 1 #seconds
min_sleep_interval = max_sleep_interval = 3 #in seconds

_TIME_TO_SLEEP = datetime.datetime.now()
def maybe_sleep():
    #using a singleton class you could avoind using globals
    global _TIME_TO_SLEEP
    if datetime.datetime.now()>= _TIME_TO_SLEEP:
        time.sleep(sleep_duration)
        seconds_to_wait = random.randint(min_sleep_interval, max_sleep_interval)
        next_delay = datetime.timedelta(seconds= seconds_to_wait)
        _TIME_TO_SLEEP = datetime.datetime.now() + next_delay

然后在每次迭代时调用maybe_sleep()并根据自己的喜好调整常量(可能使它们不那么恒定;)

作为演示:

for i in range(10000):
    maybe_sleep()
    print(i)