Parcourir la source

Fixed bug: lambda's are linked to local variables, and don't make copies

Yentl Van Tendeloo il y a 7 ans
Parent
commit
d5921fd906
1 fichiers modifiés avec 22 ajouts et 23 suppressions
  1. 22 23
      model/model.py

+ 22 - 23
model/model.py

@@ -104,7 +104,7 @@ class ModelverseState(AtomicDEVS):
                 self.state.output.append(getattr(self.state.mvs, translate(v[0]))(*v[1]))
                 if PROFILE:
                     print("%s: %.17f" % (translate(v[0]), time.time() - start))
-                self.state.timer += self.timings[translate(v[0])]()
+                self.state.timer += self.timings[translate(v[0])]
         else:
             # Just append the message to process
             pass
@@ -122,7 +122,7 @@ class ModelverseState(AtomicDEVS):
             # So do them and calculate how long it takes
             for v in self.state.queue[0]:
                 self.state.output.append(getattr(self.state.mvs, translate(v[0]))(*v[1])[0])
-                self.state.timer += self.timings[translate(v[0])]()
+                self.state.timer += self.timings[translate(v[0])]
         else:
             self.state.timer = float("inf")
 
@@ -309,7 +309,7 @@ class ModelverseKernel(AtomicDEVS):
 
     def timeAdvance(self):
         if self.state.commands is not None:
-            return self.state.rule_generation()
+            return self.state.rule_generation
         elif self.state.waiting:
             return float("inf")
         elif self.state.mvk is None:  
@@ -518,24 +518,24 @@ args = {
         "mvs2mvk_bandwidth":    50000000000,
         "mvk2mvi_latency":      0.000001,
         "mvk2mvi_bandwidth":    50000000000,
-        "read_root":            lambda: 0.0000,
-        "create_node":          lambda: 0.0000,
-        "create_edge":          lambda: 0.0000,
-        "create_nodevalue":     lambda: 0.0000,
-        "create_dict":          lambda: 0.0000,
-        "read_value":           lambda: 0.0000,
-        "read_outgoing":        lambda: 0.0000,
-        "read_incoming":        lambda: 0.0000,
-        "read_edge":            lambda: 0.0000,
-        "read_dict":            lambda: 0.0000,
-        "read_dict_keys":       lambda: 0.0000,
-        "read_dict_node":       lambda: 0.0000,
-        "read_dict_edge":       lambda: 0.0000,
-        "read_dict_node_edge":  lambda: 0.0000,
-        "read_reverse_dict":    lambda: 0.0000,
-        "delete_node":          lambda: 0.0000,
-        "delete_edge":          lambda: 0.0000,
-        "rule_generation":      lambda: 0.0000,
+        "read_root":            0.0000,
+        "create_node":          0.0000,
+        "create_edge":          0.0000,
+        "create_nodevalue":     0.0000,
+        "create_dict":          0.0000,
+        "read_value":           0.0000,
+        "read_outgoing":        0.0000,
+        "read_incoming":        0.0000,
+        "read_edge":            0.0000,
+        "read_dict":            0.0000,
+        "read_dict_keys":       0.0000,
+        "read_dict_node":       0.0000,
+        "read_dict_edge":       0.0000,
+        "read_dict_node_edge":  0.0000,
+        "read_reverse_dict":    0.0000,
+        "delete_node":          0.0000,
+        "delete_edge":          0.0000,
+        "rule_generation":      0.0000,
         "rules_per_phase":      2000,
     }
 
@@ -543,8 +543,7 @@ with open("calibration/averages", 'r') as param_file:
     for l in param_file:
         op, t = l.split(": ")
         op = op.strip()
-        t = float(t)
-        args[op] = lambda: t
+        args[op] = float(t)
 
 model = System(**args)
 sim = Simulator(model)