[Python-checkins] r80018 - in sandbox/trunk/2to3/lib2to3: main.py refactor.py
benjamin.peterson
python-checkins at python.org
Mon Apr 12 23:12:12 CEST 2010
Author: benjamin.peterson
Date: Mon Apr 12 23:12:12 2010
New Revision: 80018
Log:
prevent diffs from being mangled is multiprocess mode #6409
Patch by George Boutsioukis.
Modified:
sandbox/trunk/2to3/lib2to3/main.py
sandbox/trunk/2to3/lib2to3/refactor.py
Modified: sandbox/trunk/2to3/lib2to3/main.py
==============================================================================
--- sandbox/trunk/2to3/lib2to3/main.py (original)
+++ sandbox/trunk/2to3/lib2to3/main.py Mon Apr 12 23:12:12 2010
@@ -62,8 +62,14 @@
if self.show_diffs:
diff_lines = diff_texts(old, new, filename)
try:
- for line in diff_lines:
- print line
+ if self.output_lock is not None:
+ with self.output_lock:
+ for line in diff_lines:
+ print line
+ sys.stdout.flush()
+ else:
+ for line in diff_lines:
+ print line
except UnicodeEncodeError:
warn("couldn't encode %s's diff for your terminal" %
(filename,))
Modified: sandbox/trunk/2to3/lib2to3/refactor.py
==============================================================================
--- sandbox/trunk/2to3/lib2to3/refactor.py (original)
+++ sandbox/trunk/2to3/lib2to3/refactor.py Mon Apr 12 23:12:12 2010
@@ -607,6 +607,7 @@
def __init__(self, *args, **kwargs):
super(MultiprocessRefactoringTool, self).__init__(*args, **kwargs)
self.queue = None
+ self.output_lock = None
def refactor(self, items, write=False, doctests_only=False,
num_processes=1):
@@ -620,6 +621,7 @@
if self.queue is not None:
raise RuntimeError("already doing multiple processes")
self.queue = multiprocessing.JoinableQueue()
+ self.output_lock = multiprocessing.Lock()
processes = [multiprocessing.Process(target=self._child)
for i in xrange(num_processes)]
try:
More information about the Python-checkins
mailing list