diff --git a/compose/parallel.py b/compose/parallel.py index 341ca2f5e..dd83c70cd 100644 --- a/compose/parallel.py +++ b/compose/parallel.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import logging import operator import sys +from threading import Lock from threading import Semaphore from threading import Thread @@ -251,6 +252,7 @@ class ParallelStreamWriter(object): """ noansi = False + lock = Lock() @classmethod def set_noansi(cls, value=True): @@ -274,6 +276,7 @@ class ParallelStreamWriter(object): self.stream.flush() def _write_ansi(self, obj_index, status): + self.lock.acquire() position = self.lines.index(obj_index) diff = len(self.lines) - position # move up @@ -285,6 +288,7 @@ class ParallelStreamWriter(object): # move back down self.stream.write("%c[%dB" % (27, diff)) self.stream.flush() + self.lock.release() def _write_noansi(self, obj_index, status): self.stream.write("{} {:<{width}} ... {}\r\n".format(self.msg, obj_index,