فهرست منبع

Implement purging (garbage collection) in the Modelverse

Yentl Van Tendeloo 7 سال پیش
والد
کامیت
d866f45fa3
1فایلهای تغییر یافته به همراه7 افزوده شده و 0 حذف شده
  1. 7 0
      model/model.py

+ 7 - 0
model/model.py

@@ -60,6 +60,7 @@ def translate(operation):
             "RDK": "read_dict_keys",
             "DE": "delete_edge",
             "DN": "delete_node",
+            "GC": "purge",
         }[operation]
 
 class MvSState(object):
@@ -107,6 +108,7 @@ class ModelverseState(AtomicDEVS):
                 "read_reverse_dict": read_reverse_dict,
                 "delete_node": delete_node,
                 "delete_edge": delete_edge,
+                "purge": 0.0,
             }
 
         self.state = MvSState()
@@ -177,6 +179,7 @@ class MvKState(object):
         self.rule_generation = rule_generation
         self.current_time = 0.0
         self.start_task_time = 0.0
+        self.execution_rounds = 0
 
     def __str__(self):
         return "\nMvK: %s\n" % self.mvk + \
@@ -255,7 +258,11 @@ class ModelverseKernel(AtomicDEVS):
             if len(self.state.tasks) == 0:
                 # Read out new set of tasks first
                 if self.state.reply is None:
+                    self.state.execution_rounds += 1
                     commands = [("RDK", [self.state.root])]
+                    if self.state.execution_rounds > 10000:
+                        commands.append(("GC", []))
+                        self.state.execution_rounds = 0
                 else:
                     self.state.tasks = self.state.reply[0]
                     commands = None