status: Use multiprocessing for repo status -j<num> instead of threading

This change increases the speed of the command with parallelization with
processes.  The parallelization with threads doesn't work well, and
increasing the number of jobs to many (8 threads ~) didn't increase the speed.
Possibly, the global interpreter lock of Python affects.

Bug: https://crbug.com/gerrit/12389
Change-Id: Icbe5df8ba037dd91422b96f4e43708068d7be924
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/279936
Tested-by: Kimiyuki Onaka <kimiyuki@google.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
Kimiyuki Onaka
2020-08-28 10:05:27 +09:00
committed by Mike Frysinger
parent 4e1fc1013c
commit 0501b29e7a
2 changed files with 22 additions and 33 deletions

View File

@@ -3208,6 +3208,13 @@ class Project(object):
self._bare = bare
self._gitdir = gitdir
# __getstate__ and __setstate__ are required for pickling because __getattr__ exists.
def __getstate__(self):
return (self._project, self._bare, self._gitdir)
def __setstate__(self, state):
self._project, self._bare, self._gitdir = state
def LsOthers(self):
p = GitCommand(self._project,
['ls-files',