Python 为什么不能序列化函数闭包
发布网友
发布时间:2022-04-27 06:10
我来回答
共1个回答
热心网友
时间:2022-04-18 15:03
理论上是感觉是能序列化的。纯Python的bytecode就是string而已,可以自己去看。
当然也不会这么简单,除非是那种简单的函数,你还得把这个函数执行的环境给一并序列化了传过去,万一碰到一个依赖了C-Extension的就没辙了,你总没法把内存打包过去吧。
所以Pickle这么二,但是依然没人去修的原因,我个人认为是Function的序列化在简单情况(函数自己和所有的依赖都是纯Python的)下是可以的,但是一来是很昂贵,二来是没法应对复杂的情况。如果真要将一段逻辑在不同的process之间分享,由程序猿自己来保证两边环境对等,然后share code在eval就好了。