ProcessPoolExecutor无法执行lambda函数但可执行print函数的原因
ProcessPoolExecutor中Lambda表达式无法正常工作的原因
Python的ProcessPoolExecutor在跨进程分发任务时,依靠pickle序列化机制把任务函数和参数从主进程传递到子进程。
- 内置函数
print属于Python解释器原生支持的可序列化对象,pickle能准确识别并完成序列化,子进程可以正常接收并执行这个函数。 - 而
lambda x: print(x)是匿名函数,pickle默认不支持序列化这类对象——lambda没有正式的函数名称,也没有和具体模块绑定的可追溯信息,pickle无法在子进程中重建这个函数实例,所以提交lambda的任务会静默失败(如果添加异常捕获,会看到类似_pickle.PicklingError的报错)。
内容的提问来源于stack exchange,提问作者SpaceMonkey
相关产品推荐
相关产品推荐

