Wait for the compound component's children to stop running.

        :param bool end_comps: only wait for the components that end a
            pipeline. This is useful for complex graphs where it is
            normal for some components not to terminate.

def join(self, end_comps=False):
        """Wait for the compound component's children to stop running.

        :param bool end_comps: only wait for the components that end a
            pipeline. This is useful for complex graphs where it is
            normal for some components not to terminate.

        """
        for name, child in self._compound_children.items():
            if end_comps and not child.is_pipe_end():
                continue
            self.logger.debug('join %s (%s)', name, child.__class__.__name__)
            child.join()