尝试在 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()
这是我正在尝试做的事情:我想 运行 在 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()