是否有一种将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")
...
答案 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的帖子很不错。)