Heim  >  Fragen und Antworten  >  Hauptteil

python - Wie füge ich beim Durchlaufen einer Liste Zeit- oder Geschwindigkeitskontrolle hinzu?

def dateRange(start, end, step=1, format="%Y-%m-%d"):
    strptime, strftime = datetime.datetime.strptime, datetime.datetime.strftime
    days = (strptime(end, format) - strptime(start, format)).days
    return [strftime(strptime(start, format) + datetime.timedelta(i), format) for i in xrange(0, days, step)]
ef weekend():
    try:
        dayday = dateRange(st, ed)

        for day in dayday:
            d =day.replace('-','')
            date = d
            server_url = "http://www.easybots.cn/api/holiday.php?d="

            vop_url_request = urllib2.Request(server_url + date)
            vop_response = urllib2.urlopen(vop_url_request)

            vop_data = json.loads(vop_response.read())

            if vop_data[date] == '1' or vop_data[date] == '2':
                dayday.remove(day)

        return dayday

    except:
        dayday = dateRange(st, ed)
        return dayday

Es gibt eine solche Wochenendfunktion zum Anfordern einiger Inhalte, aber bei jeder Ausführung fehlen einige Inhalte. Es wird vermutet, dass es sich um ein Problem mit der Netzwerkgeschwindigkeit handelt. So begrenzen Sie die Häufigkeit der Durchquerung oder des Zugriffs alle paar Sekunden ?

天蓬老师天蓬老师2683 Tage vor706

Antworte allen(2)Ich werde antworten

  • typecho

    typecho2017-06-14 10:55:10

    在每次遍历后, 加个睡眠时间咯

    time.sleep(1) # 睡眠1秒

    也就是在你的代码可以调整为:

    for day in dayday:
        ...(访问处理代码)
        time.sleep(1)
        

    Antwort
    0
  • 学习ing

    学习ing2017-06-14 10:55:10

    找到问题了,在遍历的时候对原列表进行remove操作会使列表长度发生变化,从而导致列表错位导致,最后出来的结果不是想要的结果

    Antwort
    0
  • StornierenAntwort