Python mulprocessing Poolのapply_async(同時)コールバック関数の例
22166 ワード
理由: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,663 【 3336 】 SpawnPoolWorker-1 1
2019-10-06 00:18:05,663 【 2884 】 SpawnPoolWorker-2 2
2019-10-06 00:18:05,663 【 3336 】 SpawnPoolWorker-1 3
2019-10-06 00:18:05,663 【 2884 】 SpawnPoolWorker-2 4
2019-10-06 00:18:05,663 【 4668 】 MainProcess func --->1
2019-10-06 00:18:05,663 【 3336 】 SpawnPoolWorker-1 5
2019-10-06 00:18:05,663 【 2884 】 SpawnPoolWorker-2 6
2019-10-06 00:18:05,663 【 4668 】 MainProcess func --->2
2019-10-06 00:18:05,663 【 3336 】 SpawnPoolWorker-1 7
2019-10-06 00:18:05,663 【 2884 】 SpawnPoolWorker-2 8
2019-10-06 00:18:05,663 【 4668 】 MainProcess func --->3
2019-10-06 00:18:05,663 【 3336 】 SpawnPoolWorker-1 9
2019-10-06 00:18:05,663 【 2884 】 SpawnPoolWorker-2 10
2019-10-06 00:18:05,663 【 4668 】 MainProcess func --->4
2019-10-06 00:18:05,664 【 3336 】 SpawnPoolWorker-1 11
2019-10-06 00:18:05,664 【 2884 】 SpawnPoolWorker-2 12
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->5
2019-10-06 00:18:05,664 【 3336 】 SpawnPoolWorker-1 13
2019-10-06 00:18:05,664 【 2884 】 SpawnPoolWorker-2 14
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->6
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->7
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->8
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->9
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->10
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->11
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->12
2019-10-06 00:18:05,664 【 4668 】 MainProcess func --->13
2019-10-06 00:18:05,665 【 4668 】 MainProcess func --->14