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-11个任务
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-22个任务
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-13个任务
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-24个任务
2019-10-06 00:18:05,6634668 】 MainProcess 			func函数的返回值--->1
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-15个任务
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-26个任务
2019-10-06 00:18:05,6634668 】 MainProcess 			func函数的返回值--->2
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-17个任务
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-28个任务
2019-10-06 00:18:05,6634668 】 MainProcess 			func函数的返回值--->3
2019-10-06 00:18:05,6633336 】 SpawnPoolWorker-19个任务
2019-10-06 00:18:05,6632884 】 SpawnPoolWorker-210个任务
2019-10-06 00:18:05,6634668 】 MainProcess 			func函数的返回值--->4
2019-10-06 00:18:05,6643336 】 SpawnPoolWorker-111个任务
2019-10-06 00:18:05,6642884 】 SpawnPoolWorker-212个任务
2019-10-06 00:18:05,6644668 】 MainProcess 			func函数的返回值--->5
2019-10-06 00:18:05,6643336 】 SpawnPoolWorker-113个任务
2019-10-06 00:18:05,6642884 】 SpawnPoolWorker-214个任务
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

你可能感兴趣的:(Python,Multiprocessing)