Skip to content

Commit 0979422

Browse files
committed
master: cache sent/forwarded module names
On 32x Docker run of issue_140__thread_pileup.yml Before: ncalls tottime percall cumtime percall filename:lineno(function) 384807 3.595 0.000 12.207 0.000 /home/dmw/src/mitogen/mitogen/master.py:896(_forward_one_module) 1218352 4.867 0.000 7.302 0.000 /home/dmw/src/mitogen/mitogen/master.py:853(_send_module_and_related) After: ncalls tottime percall cumtime percall filename:lineno(function) 384807 3.839 0.000 6.543 0.000 /home/dmw/src/mitogen/mitogen/master.py:902(_forward_one_module) 1218352 0.723 0.000 0.898 0.000 /home/dmw/src/mitogen/mitogen/master.py:856(_send_module_and_related)
1 parent 49a8745 commit 0979422

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

mitogen/master.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,9 @@ def __init__(self, router):
707707
self.blacklist = []
708708
self.whitelist = ['']
709709

710+
#: Context -> set([fullname, ..])
711+
self._forwarded_by_context = {}
712+
710713
#: Number of GET_MODULE messages received.
711714
self.get_module_count = 0
712715
#: Total time spent in uncached GET_MODULE.
@@ -846,6 +849,9 @@ def _send_module_load_failed(self, stream, fullname):
846849
)
847850

848851
def _send_module_and_related(self, stream, fullname):
852+
if fullname in stream.sent_modules:
853+
return
854+
849855
try:
850856
tup = self._build_tuple(fullname)
851857
for name in tup[4]: # related
@@ -889,6 +895,14 @@ def _send_forward_module(self, stream, context, fullname):
889895
)
890896

891897
def _forward_one_module(self, context, fullname):
898+
forwarded = self._forwarded_by_context.get(context)
899+
if forwarded is None:
900+
forwarded = set()
901+
self._forwarded_by_context[context] = forwarded
902+
903+
if fullname in forwarded:
904+
return
905+
892906
path = []
893907
while fullname:
894908
path.append(fullname)

0 commit comments

Comments
 (0)