尝试在 Jupyter Notebook 中每小时 运行 一个 python 脚本,持续 24 小时

Trying to run a python script every hour for 24 hours in Jupyter Notebook

这是我正在尝试做的事情:我想 运行 在 24 小时内每小时 运行 以下功能。此函数从 api 中收集数据,将值附加到字典并将其保存为 json 文件供以后使用。我 运行ning 的代码工作正常,但它并不优雅,因为我必须使用 KeyboardInterrupt 来停止它。我希望脚本在 24 小时后停止 运行ning 并在每小时打印:print('data successfully collected at ' + time.ctime()

def weather_collect():
    url = 'http://api.openweathermap.org/data/2.5/weather?lat={}&lon={}&appid={}&units=metric'
    response = requests.get(url.format(lat,lon, api_key))
    r = response.json()
    data['temperature'].append(r['main']['temp'])
    data['humidity'].append(r['main']['humidity'])
    data['pressure'].append(r['main']['pressure'])
    data['visibility'].append(r['visibility'])
    data['wind_speed'].append(r['wind']['speed'])
    data['time'].append(time.ctime())
    with open('data.json', 'w') as f:
        f.write(json.dumps(data))
    return data

schedule.every(1).hour.do(weather_collect)
while 1:
    schedule.run_pending()
    time.sleep(1)

一个解决方案可能是添加一个每次循环执行时递增 1 的计数器。 并在第 24 次迭代时打破“while 1”循环。

而不是:

schedule.every(1).hour.do(weather_collect)
while 1:
    schedule.run_pending()
    time.sleep(1)

放这个:

for i in range(25):
    weather_collect()
    print('data successfully collected at ' + time.ctime())
    sleep(3600) # sleep one hour
exit()