gpt4 book ai didi

python - Python 数据抓取的作业调度

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:54 25 4
gpt4 key购买 nike

我正在从某个网站抓取(提取)数据。数据包含我需要的两个值,即(网格)频率值时间

网站上的数据每秒更新一次。我想使用 python 不断地将这些值保存(附加它们)到列表或元组中。为此,我尝试使用 schedule 库。以下作业调度命令每秒运行一次数据抓取功能(socket_freq)。

import schedule
schedule.every(1).seconds.do(socket_freq)

while True:
schedule.run_pending()

我面临两个问题:

  1. 我不知道如何限制计划在选定的时间间隔内运行。例如,我想运行 5 或 10 分钟。我该如何定义它?我的意思是如何告诉时间表在特定时间后停止。
  2. 如果我运行此代码并在几秒钟后停止它(使用中断),那么我经常会得到多个条目,例如这里是一个结果,其中元组中的第一个 list[ ] 指时间值,第二个 list[ ] 指时间值list[ ] 是频率值:

输出:

(['19:27:02','19:27:02','19:27:02','19:27:03','19:27:03','19:27:03','19:27:03','19:27:03','19:27:03','19:27:03','19:27:04','19:27:04','19:27:04', ...], 
['50.020','50.020','50.020','50.018','50.018','50.018','50.018','50.018','50.018','50.018','50.017','50.017','50.017'...])

正如您所看到的,时间变量被输入(附加)多次,尽管我使用了每 1 秒运行一次的计划。我实际上期望检索的是:

输出:

(['19:27:02','19:27:03','19:27:04'],['50.020','50.018','50.017'])

有人知道如何解决这些问题吗?

谢谢!

(我使用的是 python 2.7.9)

最佳答案

好的,这就是我解决这些问题的方法:

  1. 尝试在程序开始时获取时间戳,然后在每次执行计划的代码段时检查它是否工作了足够长的时间。
  2. 使用time.sleep()让您的程序休眠一段时间。

检查下面的示例:

import schedule
import datetime
import time

# Obtain current time
start = datetime.datetime.now()

# Simple callable for example
class DummyClock:
def __call__(self):
print datetime.datetime.now()

schedule.every(1).seconds.do(DummyClock())

while True:
schedule.run_pending()
# 5 minutes == 300 seconds
if (datetime.datetime.now() - start).seconds >= 300:
break
# And here we halt execution for a second
time.sleep(1)

欢迎所有重构

关于python - Python 数据抓取的作业调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com