Add smtio status msgs when --progress is inactive
authorClifford Wolf <clifford@clifford.at>
Thu, 29 Mar 2018 19:59:30 +0000 (21:59 +0200)
committerClifford Wolf <clifford@clifford.at>
Thu, 29 Mar 2018 19:59:30 +0000 (21:59 +0200)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
backends/smt2/smtio.py

index d8e095e6b294b3bb91e6b065ca6e2824f3faaf49..bf72e8916eff3016f2f6e32fd0fb9af0c0729905 100644 (file)
@@ -302,13 +302,13 @@ class SmtIo:
             return ""
         return self.p_queue.get()
 
-    def p_poll(self):
+    def p_poll(self, timeout=0.1):
         assert self.p is not None
         assert self.p_running
         if self.p_next is not None:
             return False
         try:
-            self.p_next = self.p_queue.get(True, 0.1)
+            self.p_next = self.p_queue.get(True, timeout)
             return False
         except Empty:
             return True
@@ -646,6 +646,27 @@ class SmtIo:
                     print("\b \b" * num_bs, end="", file=sys.stderr)
                     sys.stderr.flush()
 
+            else:
+                count = 0
+                while self.p_poll(60):
+                    count += 1
+                    msg = None
+
+                    if count == 1:
+                        msg = "1 minute"
+
+                    elif count in [5, 10, 15, 30]:
+                        msg = "%d minutes" % count
+
+                    elif count == 60:
+                        msg = "1 hour"
+
+                    elif count % 60 == 0:
+                        msg = "%d hours" % (count // 60)
+
+                    if msg is not None:
+                        print("%s waiting for solver (%s)" % (self.timestamp(), msg), flush=True)
+
         result = self.read()
 
         if self.debug_file: