multiprocessing Pool 进程池

import logging
import datetime
import multiprocessing

FORMAT = "%(process)d %(processName)s %(thread)d %(message)s"
logging.basicConfig(level=logging.INFO, format=FORMAT)

def calc(i):
    sum = 0
    for _ in range(100000000):
        sum += 1
    logging.info('{}.in function'.format(sum))
    return sum

if __name__ == '__main__':
    start = datetime.datetime.now()

    pool = multiprocessing.Pool(2)
    for i in range(5):
        pool.apply_async(calc, args=(i, ),
                         callback=lambda x: logging.info('{}.in callback'.format(x)))
    pool.close()
    pool.join()

    delta = (datetime.datetime.now() - start).total_seconds()
    print(delta)