Use only a single diff executor

This commit is contained in:
Kovid Goyal 2018-08-04 17:46:05 +05:30
parent 42cabace47
commit 927bfcd37a
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -205,9 +205,13 @@ def parse_patch(raw):
class Differ: class Differ:
diff_executor = None
def __init__(self): def __init__(self):
self.jmap = {} self.jmap = {}
self.jobs = [] self.jobs = []
if Differ.diff_executor is None:
Differ.diff_executor = self.diff_executor = concurrent.futures.ThreadPoolExecutor(max_workers=os.cpu_count())
def add_diff(self, file1, file2): def add_diff(self, file1, file2):
self.jmap[file1] = file2 self.jmap[file1] = file2
@ -216,7 +220,7 @@ class Differ:
def __call__(self, context=3): def __call__(self, context=3):
global left_lines, right_lines global left_lines, right_lines
ans = {} ans = {}
with concurrent.futures.ThreadPoolExecutor(max_workers=os.cpu_count()) as executor: executor = Differ.diff_executor
jobs = {executor.submit(run_diff, key, self.jmap[key], context): key for key in self.jobs} jobs = {executor.submit(run_diff, key, self.jmap[key], context): key for key in self.jobs}
for future in concurrent.futures.as_completed(jobs): for future in concurrent.futures.as_completed(jobs):
key = jobs[future] key = jobs[future]