diff options
| -rw-r--r-- | meta/lib/oe/utils.py | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index 46fc76c261..1ee947d584 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py | |||
| @@ -473,70 +473,6 @@ def get_multilib_datastore(variant, d): | |||
| 473 | localdata.setVar("MLPREFIX", "") | 473 | localdata.setVar("MLPREFIX", "") |
| 474 | return localdata | 474 | return localdata |
| 475 | 475 | ||
| 476 | # | ||
| 477 | # Python 2.7 doesn't have threaded pools (just multiprocessing) | ||
| 478 | # so implement a version here | ||
| 479 | # | ||
| 480 | |||
| 481 | from queue import Queue | ||
| 482 | from threading import Thread | ||
| 483 | |||
| 484 | class ThreadedWorker(Thread): | ||
| 485 | """Thread executing tasks from a given tasks queue""" | ||
| 486 | def __init__(self, tasks, worker_init, worker_end, name=None): | ||
| 487 | Thread.__init__(self, name=name) | ||
| 488 | self.tasks = tasks | ||
| 489 | self.daemon = True | ||
| 490 | |||
| 491 | self.worker_init = worker_init | ||
| 492 | self.worker_end = worker_end | ||
| 493 | |||
| 494 | def run(self): | ||
| 495 | from queue import Empty | ||
| 496 | |||
| 497 | if self.worker_init is not None: | ||
| 498 | self.worker_init(self) | ||
| 499 | |||
| 500 | while True: | ||
| 501 | try: | ||
| 502 | func, args, kargs = self.tasks.get(block=False) | ||
| 503 | except Empty: | ||
| 504 | if self.worker_end is not None: | ||
| 505 | self.worker_end(self) | ||
| 506 | break | ||
| 507 | |||
| 508 | try: | ||
| 509 | func(self, *args, **kargs) | ||
| 510 | except Exception as e: | ||
| 511 | # Eat all exceptions | ||
| 512 | bb.mainlogger.debug("Worker task raised %s" % e, exc_info=e) | ||
| 513 | finally: | ||
| 514 | self.tasks.task_done() | ||
| 515 | |||
| 516 | class ThreadedPool: | ||
| 517 | """Pool of threads consuming tasks from a queue""" | ||
| 518 | def __init__(self, num_workers, num_tasks, worker_init=None, worker_end=None, name="ThreadedPool-"): | ||
| 519 | self.tasks = Queue(num_tasks) | ||
| 520 | self.workers = [] | ||
| 521 | |||
| 522 | for i in range(num_workers): | ||
| 523 | worker = ThreadedWorker(self.tasks, worker_init, worker_end, name=name + str(i)) | ||
| 524 | self.workers.append(worker) | ||
| 525 | |||
| 526 | def start(self): | ||
| 527 | for worker in self.workers: | ||
| 528 | worker.start() | ||
| 529 | |||
| 530 | def add_task(self, func, *args, **kargs): | ||
| 531 | """Add a task to the queue""" | ||
| 532 | self.tasks.put((func, args, kargs)) | ||
| 533 | |||
| 534 | def wait_completion(self): | ||
| 535 | """Wait for completion of all the tasks in the queue""" | ||
| 536 | self.tasks.join() | ||
| 537 | for worker in self.workers: | ||
| 538 | worker.join() | ||
| 539 | |||
| 540 | class ImageQAFailed(Exception): | 476 | class ImageQAFailed(Exception): |
| 541 | def __init__(self, description, name=None, logfile=None): | 477 | def __init__(self, description, name=None, logfile=None): |
| 542 | self.description = description | 478 | self.description = description |
