0

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")
...
4

1 に答える 1

2

__call__メソッドを定義することで、任意の「オブジェクト」を関数に変えることができます(こちらを参照)。したがって、計算で状態を区分したい場合は、クラスをピクルすることができ、次にそのオブジェクトをピクルすることができます。

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

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

それは簡単な詐欺師の方法です。なぜ酸洗い?pickle 化できるものは、恐れることなく別のプロセスに送ることができます。このようなオブジェクトを使用して、「貧しい人々 の閉鎖」を形成しています。

(本当に関数をピクルしたい場合は、SOの「マーシャル」ライブラリに関する素敵な投稿があります。)

于 2013-03-28T03:48:48.387 に答える