[meld] Limit number of tasks per child process to avoid memory issues



commit c8cd2b792a21648836cf3db847af5c1dce018492
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Thu Oct 18 05:54:50 2012 +1000

    Limit number of tasks per child process to avoid memory issues
    
    Child processes (most obvious on e.g., 8-core systems) can take up
    significant chunks of memory in proportion to the main Meld process.
    This commit just limits the number of tasks delegated to a child before
    it terminates, which 'fixes' the problem.

 meld/filediff.py |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index ada1409..51c18e8 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -55,7 +55,11 @@ def matcher_worker(text1, textn):
     matcher = matchers.InlineMyersSequenceMatcher(None, text1, textn)
     return matcher.get_opcodes()
 
-process_pool = multiprocessing.Pool(None, init_worker)
+# maxtasksperchild is new in Python 2.7; for 2.6 compat we do this
+try:
+    process_pool = multiprocessing.Pool(None, init_worker, maxtasksperchild=1)
+except TypeError:
+    process_pool = multiprocessing.Pool(None, init_worker)
 
 
 class CachedSequenceMatcher(object):



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]