私は、遺伝子技術を使用して方程式を進化させるプログラムを書いています。関数「mainfunc」をParallelPythonの「submit」関数に送信できるようにしたい。関数'mainfunc'は、Utilityクラスで定義された2つまたは3つのメソッドを呼び出します。他のクラスをインスタンス化し、さまざまなメソッドを呼び出します。私が欲しいのは、すべてを1つの名前空間に収めることだと思います。そのため、関数'mainfunc'内のクラスの一部(おそらくすべてである必要があります)をインスタンス化しました。ユーティリティメソッド'generate()'を呼び出します。一連の実行に従うとすると、コード内のすべてのクラスとメソッドが関係します。
これで、方程式がツリーに保存されます。ツリーが生成、変更、またはクロスブリードされるたびに、ツリーのディクショナリ属性からアクセスできるように、ノードに新しいキーを指定する必要があります。クラス'KeySeq'はこれらのキーを生成します。
Parallel Pythonでは、「mainfunc」の複数のインスタンスをPPの「submit」関数に送信します。それぞれが「KeySeq」にアクセスできる必要があります。それらがすべてKeySeqの同じインスタンスにアクセスして、返されたツリーのどのノードも同じキーを持たないようにすると便利ですが、必要に応じてそれを回避できます。
だから:私の質問は、すべてをmainfuncに詰め込むことについてです。ありがとう(編集)mainfuncにすべてを含めない場合は、さまざまな場所でさまざまな議論を渡すことによって、依存関数などについてPPに伝えようとする必要があります。私はそれを避けようとしています。
(後期編集)ks.next()が'generate()関数内で呼び出された場合、エラー' NameError:global name'ks' isnotdefined'を返します。
class KeySeq:
"Iterator to produce sequential \
integers for keys in dict"
def __init__(self, data = 0):
self.data = data
def __iter__(self):
return self
def next(self):
self.data = self.data + 1
return self.data
class One:
'some code'
class Two:
'some code'
class Three:
'some code'
class Utilities:
def generate(x):
'___________'
def obfiscate(y):
'___________'
def ruminate(z):
'__________'
def mainfunc(z):
ks = KeySeq()
one = One()
two = Two()
three = Three()
utilities = Utilities()
list_of_interest = utilities.generate(5)
return list_of_interest
result = mainfunc(params)