代码之家  ›  专栏  ›  技术社区  ›  anna carolina

如何更新在python中接收到的每个数据的时间

  •  2
  • anna carolina  · 技术社区  · 6 年前

    我是Python的初学者,我正在编写一个脚本,以节省从算法接收数据的时间。

    在脚本中,我有一个算法,它只接受很少的参数,并返回它检测到的数据的ID。以下是它的输出:

    S.No    Data Id         Time
    1       0               2018-11-16 15:00:00
    2       0, 1            2018-11-16 15:00:02
    3       0, 1            2018-11-16 15:00:03
    4       0, 1, 2         2018-11-16 15:00:05
    5       0, 1, 2         2018-11-16 15:00:06
    6       0, 2            2018-11-16 15:00:08
    

    从上面的输出可以看出,在第一次尝试时,它检测到ID的数据 0 . 在第二次尝试中,它检测到ID的数据 1 所以检测到的总数据ID 0, 1 . 在第四次尝试中,它检测到 2 身份证。这是一直在进行,因为它正在运行 while True . 从上面我们可以说 身份证是 8 sec ,为了 时间是 4 sec 为了 它是 3 sec . 我需要计算这些时间段。为此,我写了以下代码:

    data_dict = {}       # To store value of time for each data id
    data_dict_sec = {}   # To store value of seconds for each data id
    
    data = amc_data_retention()   # data contains the data id
    
    for dataID in data.items():
        if run_once:
            run_once = False
            data_dict[dataID] = time.time()
            data_dict_sec[dataID] = 0     
    
    
    for dataID in data.items():
        if dataID in data_dict:
            sec = time.time() - data_dict[dataID]
            data_dict_sec[dataID] += sec
            data_dict[dataID] = time.time()
    
        else:
            print("New data detected")
    

    第一 for 循环运行一次,它节省了 dataID 在里面 dict . 在下一个for循环中,该时间与当前时间相减,总秒数保存在 data_dict_sec . 在第一次迭代中,总秒数为0,但从下一次迭代开始,它将开始保存正确的秒数。只有在有1个数据ID的情况下,这才可以正常工作。第2个数据一出现,它就不会记录时间。

    有人能推荐一种写这篇文章的好方法吗?主要目标是保存每个数据ID的时间段值。请提供帮助。谢谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   A Kruger    6 年前

    这是唯一一次 data_ID 钥匙 data_dict 是第一次跑步。它应该添加每个新的 数据标识符 是看。我看不到第一个for循环是必需的,它只在这里添加了 数据标识符 第一次跑步时使用钥匙。如果将字典键初始化移动到第二个for循环中,它将检查 数据标识符 是在 数据记录 . 如果不是,则初始化它。

    也许这可以满足您的需要:

    data_dict = {}       # To store value of time for each data id
    data_dict_sec = {}   # To store value of seconds for each data id
    
    data = amc_data_retention()   # data contains the data id
    
    for dataID in data.items():
        if dataID in data_dict:
            sec = time.time() - data_dict[dataID]
            data_dict_sec[dataID] += sec
            data_dict[dataID] = time.time()
    
        else:
            print("New data detected")
            data_dict[dataID] = time.time()
            data_dict_sec[dataID] = 0