def compile(self, jobs=0): if 0 == jobs: jobs = cpu_count() self.print_msg('BS', 'Using %s parallel job(s)' % colored(str(jobs), 'yellow')) for target in self.targets: self.print_msg('BS', 'Building target %s' % colored(target.name, 'yellow')) pool = ThreadPool(jobs) for source in target.sources: args = (target, source, None) pool.apply_async(self.compile_object, args=args, callback=self.compile_object_done) try: self._wait_for_compilation(target) except BuildError as e: raise finally: pool.close() pool.join() self.run_prefinal(target) target.final(self)