我目前正在尝试为 python 推出我自己的“marshal”代码,这样我就可以在 Google App Engine 上存储已编译的 python 代码,以便以动态方式提供脚本。大家都可以验证,GAE 不支持“marshal”,并且“pickle”不能序列化代码对象。
我发现我可以构造一个代码对象,types.CodeType()
但它需要 12 个参数。
尽我所能,我找不到关于这个调用的任何文档,我真的需要构造代码对象,这样我才能exec()
做到。我的问题是,有谁知道这个types.CodeType()
“构造函数”的参数是什么或任何内省的方法?我已经使用了这里info()
定义的函数,但它只吐出通用信息!
快速常见问题解答:
- 问:为什么要编译代码?
- 答:在 Google App Engine 上,CPU 时间会花费真金白银,而我可以节省的每一点 CPU 周期都很重要。
- 问:为什么不用“元帅”?
- 答:这是Google App Engine 中不支持的模块之一。
- 问:为什么不用“泡菜”?
- A:Pickle 不支持代码对象的序列化。
更新
自 2011 年 7 月 7 日起,Google App Engine 基础架构不允许实例化代码对象,因此我的论点没有实际意义。希望这在未来能在 GAE 上得到解决。