针对一些特殊需求,需要对map函数传递两个或者多个参数,这时单纯的map函数已经不能满足需求了,就需要借助偏函数来完成。
1.偏函数partial
偏函数是python自带的包,直接导入就能用。
偏函数partial的第一个参数就是所承载的原函数,之后原函数的参数再依次传入partial函数。
例子
# -*- coding: utf-8 -*-
from functools import partial
def calsum(a, b):
return a + b
# 承载calsum函数,并传入第一个参数
para = partial(calsum, 3)
# 传递第二个参数,就是把2传给para
res = para(2)
# 输出最后的结果
print(res)
# 5
2.pool.map应用
举个例子说明:
首先先定义一个列表,里面存放着整数,之后计算这个列表的均值,用多进程判断列表里的每个数字与均值的大小,比均值大输出1,反之输出0.
# -*- coding: utf-8 -*-
from multiprocessing import Pool
# 导入偏函数
from functools import partial
import numpy as np
def adjust(mean, number):
if number > mean:
return 1
else:
return 0
if __name__ == "__main__":
num_list = [12, 45, 67, 88, 99, 62]
# 计算均值
num_mean = np.mean(num_list)
# 定义进程池
pool = Pool(4)
# 定义偏函数,并传入均值
pfunc = partial(adjust, num_mean)
# 执行map,传入列表
res_list = pool.map(pfunc, num_list)
print(res_list)
输出结果:
[0, 0, 1, 1, 1, 0]