@@ -128,6 +128,10 @@ class InteractConsoleLogFilter(logging.Filter):
return True
=20
class TerminalFilter(object):
+
+ # 10 Hz (FPS) -> 0.100 secs
+ _DEFAULT_PRINT_INTERVAL =3D 0.100
+
rows =3D 25
columns =3D 80
=20
@@ -166,7 +170,7 @@ class TerminalFilter(object):
self.interactive =3D sys.stdout.isatty()
self.footer_present =3D False
self.lastpids =3D []
- self.lasttime =3D None
+ self.lasttime =3D time.time()
self.quiet =3D quiet
=20
self._footer_buf =3D io.StringIO()
@@ -251,11 +255,23 @@ class TerminalFilter(object):
failedtasks =3D self.helper.failed_tasks
runningpids =3D self.helper.running_pids
currenttime =3D time.time()
- if not self.lasttime or (currenttime - self.lasttime > 5):
+ deltatime =3D currenttime - self.lasttime
+
+ if (deltatime > 5.0):
self.helper.needUpdate =3D True
- self.lasttime =3D currenttime
- if self.footer_present and not self.helper.needUpdate:
+ need_update =3D self.helper.needUpdate
+ else:
+ # Do not let to update faster then _DEFAULT_PRINT_INTERVAL
+ # to avoid heavy print() flooding.
+ need_update =3D self.helper.needUpdate and (deltatime > self=
._DEFAULT_PRINT_INTERVAL)
+
+ if self.footer_present and (not need_update):
+ # Footer update is not need.
return
+ else:
+ # Footer update is need and store its "lasttime" value.
+ self.lasttime =3D currenttime
+
self.helper.needUpdate =3D False
if self.footer_present: