Python mulprocessing Poolのapply_async(同時)コールバック関数の例


理由:apply_async(同時)コールバック関数の使い方
# coding=utf-8
import logging
import multiprocessing
import os
import time
from multiprocessing import Pool

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s 【 %(process)d 】 %(processName)s %(message)s"
)


def func (i):
    logging.info(f'   {i}   ')
    return i  # func       callback   


def call_back (res):  #     
    logging.info(f'\t\t\tfunc      --->{res}')


def main (ctx):
    with ctx.Pool(2) as pool:
        [pool.apply_async(func, args=(i,), callback=call_back)
         for i in range(1, 15)]
        pool.close()
        pool.join()


if __name__ == '__main__':
    # windows     
    multiprocessing.set_start_method('spawn')
    #      
    ctx = multiprocessing.get_context('spawn')
    #                      。
    ctx.freeze_support()
    main(ctx)


出力:
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-1    1   
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-2    2   
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-1    3   
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-2    4   
2019-10-06 00:18:05,6634668 】 MainProcess 			func      --->1
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-1    5   
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-2    6   
2019-10-06 00:18:05,6634668 】 MainProcess 			func      --->2
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-1    7   
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-2    8   
2019-10-06 00:18:05,6634668 】 MainProcess 			func      --->3
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-1    9   
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-2    10   
2019-10-06 00:18:05,6634668 】 MainProcess 			func      --->4
2019-10-06 00:18:05,6643336 】 SpawnPoolWorker-1    11   
2019-10-06 00:18:05,6642884 】 SpawnPoolWorker-2    12   
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->5
2019-10-06 00:18:05,6643336 】 SpawnPoolWorker-1    13   
2019-10-06 00:18:05,6642884 】 SpawnPoolWorker-2    14   
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->6
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->7
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->8
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->9
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->10
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->11
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->12
2019-10-06 00:18:05,6644668 】 MainProcess 			func      --->13
2019-10-06 00:18:05,6654668 】 MainProcess 			func      --->14