パラレルPythonがそのように機能するのはなぜですか?
-
28-09-2019 - |
質問
並列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
悪夢です。
所属していません StackOverflow