代码之家  ›  专栏  ›  技术社区  ›  Rodolfo

Python-检查字典创建进度

  •  0
  • Rodolfo  · 技术社区  · 2 年前

    我正在以这种方式创建词典:

    num_states = 26565000
    num_actions = 7
    
    self.P = {
                state: {action: [] for action in range(num_actions)}
                for state in range(num_states)
            }
    

    这需要相当长的时间,我想插入 print(state) 以检查创建的进度。我不知道该把它放在哪里。

    编辑:

    我需要这本字典,因为我需要为我正在尝试强化学习的代理涉及整个观察空间

    编辑。2:

    我通常对循环使用正则表达式:

    for state in range(num_states)
        print(state)
        for action in range(num_actions)
            ...
    

    我不知道如何使用这种编码for循环的方式来获得相同的结果。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Martynas Žiemys    2 年前
    num_states = 26565000
    num_actions = 7
     
    P = {}
    for state in range(num_states):
      P[state] = {action: [] for action in range(num_actions)}
      if state % 10000 == 0: #print only once on every 1 in 10000
         print(f"\r{state/num_states:.2%}", end="")
    
        2
  •  0
  •   Kelly Bundy    2 年前

    一种破解方法是,像Martynas的答案一样,只打印万分之一:

    num_states = 26565000
    num_actions = 7
    
    self.P = {
        state: {action: [] for action in range(num_actions)}
        for state in range(num_states)
        if state % 10000 or not print(state)
    }