You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python是否有内置apply函数?多进程Pool.map执行函数列表存优化需求

Python中是否有替代原Python 2内置apply函数的工具?

嘿,刚好能解答你的问题!Python 3确实把内置的apply()函数给移除了,但你想要的这种“直接调用传入的无参函数”的需求,其实有更规范的替代方案。

你提到用multiprocessing.Pool.map批量执行函数时,写lambda f: f()总觉得有点繁琐?那你可以试试Python 3.10及以上版本里operator模块提供的operator.call——它的作用就是接收一个函数并直接调用它,完全等价于你写的那个lambda表达式,而且名字更直观。

用它改写你的代码会清爽很多:

from multiprocessing import Pool
import operator

def my_fun1(): return 1
def my_fun2(): return 2
def my_fun3(): return 3

with Pool(3) as p:
    one, two, three = p.map(operator.call, [my_fun1, my_fun2, my_fun3])

如果你的Python版本还没到3.10也没关系,完全可以自己在项目里封装一个简单的工具函数,比如:

def apply_func(f):
    return f()

之后直接用p.map(apply_func, ...)就行,命名清晰,团队里的同事一看就懂是什么意思。

另外顺便提一句:Python 2里的apply()其实还支持传递参数(比如apply(f, args, kwargs)),如果是带参函数的批量执行场景,Python 3里更推荐用functools.partial来绑定参数,再配合Pool.map使用,举个例子:

from functools import partial
from multiprocessing import Pool

def add(a, b):
    return a + b

with Pool(2) as p:
    results = p.map(partial(add, b=2), [1, 3, 5])
# 最终results会是[3, 5, 7]

这样不管是无参还是带参的函数批量执行,都有规范又好读的写法啦。

内容的提问来源于stack exchange,提问作者javidcf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:57:19