用于脚本转换的Python即时功能

时间:2013-03-27 22:41:50

标签: python

是否有一种将python函数转换为独立脚本的合理自然方式?类似的东西:

def f(): 
    # some long and involved computation

script = function_to_script(f) # now script is some sort of closure, 
                               # which can be run in a separate process
                               # or even shipped over the network to a 
                               # different host

并不喜欢:

script = open("script.py", "wt")
script.write("#!/usr/bin/env python")
...

1 个答案:

答案 0 :(得分:2)

您可以通过在其上定义__call__方法将任何“对象”转换为函数(请参阅here。)因此,如果您想将某些状态与计算划分,只要是你从一个类的顶部到底部提供的可以被腌制,然后该对象可以被腌制。

class MyPickledFunction(object):
    def __init__(self, *state):
        self.__state = state

    def __call__(self, *args, **kwargs):
        #stuff in here

这是简单的骗子方式。为什么要酸洗?任何可以腌制的东西都可以毫无畏惧地发送到另一个过程。你正在通过使用这样的物体形成一个“穷人的封闭”。

(如果你想真正挑选一个功能,那么关于“marshal”库here on SO的帖子很不错。)