<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def join(self):
 """ Waits until all jobs are completed. """

        self._dbg(2, 'Waiting for the queue to finish.')
        self.workqueue.wait_until_done()
        for child in list(self.pipe_handlers.values()):
            child.join()
        self._del_status_bar()
        self._print_status_bar()
        gc.collect()