| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | from billiard.pool import DynamicPoolfrom multiprocessing import get_logger, log_to_stderrimport loggingdef setup_logger():    log_to_stderr()    logger = get_logger()    logger.setLevel(logging.DEBUG)    return loggerdef target(n):    r = n * n    setup_logger().info("%d * %d = %d" % (n, n, r))    return rdef exit_process():    setup_logger().error("EXITING NOW!")    import os    os._exit(0)def send_exit(pool):    pool.apply_async(exit_process)def do_work(pool):    results = [pool.apply_async(target, args=[i]) for i in range(10)]    [result.get() for result in results]def workpool():    pool = DynamicPool(2)    do_work(pool)    print("GROWING")    pool.grow(1)    do_work(pool)    send_exit(pool)    import time    time.sleep(2)    pool.replace_dead_workers()    do_work(pool)if __name__ == "__main__":    workpool()
 |