質問

並列Pythonでは、なぜ渡された関数がその求人提出コールの変数と名前空間とともに必要なモジュールをラップする必要があるのはなぜですか?モジュールレベルの「グローバル」変数を保持するためにどの程度必要ですか? (それがすべて起こっているなら)

送信機能:

submit(self, func, args=(), depfuncs=(), modules=(), callback=None, callbackargs=(),group='default', globals=None)
    Submits function to the execution queue

    func - function to be executed
    args - tuple with arguments of the 'func'
    depfuncs - tuple with functions which might be called from 'func'
    modules - tuple with module names to import
    callback - callback function which will be called with argument 
        list equal to callbackargs+(result,) 
        as soon as calculation is done
    callbackargs - additional arguments for callback function
    group - job group, is used when wait(group) is called to wait for
    jobs in a given group to finish
    globals - dictionary from which all modules, functions and classes
    will be imported, for instance: globals=globals()
役に立ちましたか?

解決

その理由 pp それがそうであるように機能することは、それがすべての労働者のためにPythonインタープリターの新鮮なインスタンスになるということです。これにより、意図しない副作用がないことが保証されます。 __future__ 労働者プロセスで輸入がアクティブになっています。これに関する問題は、それが正しいことをするために、そして私の経験で物事をより複雑にすることです pp, 、特に堅牢ではありません。 pp します ユーザーにとって物事を少し簡単にするようにしてください。しかし、それを行うための努力で解決するよりも多くの問題を導入するようです。

最初からクラスターで使用するように設計されたコードを作成する場合、おそらく使用することになります pp, 、しかし、私は既存のコードを採用して作業することを発見しました pp 悪夢です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top