一、基本解释
from functools import partial
"""
典型的,函数在执行时,要带上所有必要的参数进行调用。然后,有时参数可以在函数被调用之前提前获知。
这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。
本质是实现了__call__方法,使实例对象可以+()的方式被调用
一般用于回调函数,因为异步中回调函数一般不让传参,如进程池的回调函数,默认第一个参数为子进程返回的结果
如果我们想传一个参数与子进程返回的结果交互,原先那种就不行,而使用partial就可以的
"""
def add(x, y):
return x + y
push = partial(add, 1) # 返回一个可被调用的对象,1 默认传给函数的位置参数x
print(push) # functools.partial(<function add at 0x0000018A6F9D0040>, 1)
# 当想计算1+2时,可以如下操作
ret = push(2) # 3
二、进程池回调使用
import os
from multiprocessing import Pool
def call_back(child_result, s):
print(child_result + s)
return child_result + s
def task(x, y):
return x + y
if __name__ == '__main__':
pool = Pool(os.cpu_count())
jobs = range(100)
Max = 10000
for index, v in enumerate(jobs):
pool.apply_async(func=task, args=(index, v), callback=partial(call_back, 10000))
pool.close()
pool.join()