こんにちは、以下のコードを使用して辞書エントリからスレッドを開始できるようにしようとしています。スクリプトの残りのコードは正常で、完全に機能することがわかっています。たくさんの異なるサブルーチンから選択できるようにする必要があるので、コードからできるだけ多くの定型文を削除したいと考えています。みんなありがとう!
class worker_manager:
i = test_imports()
template('one': i.import_1, 'two': i.import_2);
def __init__(self):
self.children = {}
def generate(self, control_Queue, threadName, runNum):
p = multiprocessing.Process(target=self.template[threadName], args=(control_Queue, runNum))
self.children[threadName] = p
p.start()
def terminate(self, threadName):
self.children[threadName].join
このコードを実行すると、次のエラーが発生します。
File "dynamicTest1.py", line 53
template('one': i.import_1, 'two': i.import_2);
^
SyntaxError: invalid syntax
誰にもアドバイスはありますか?
編集: 通常のスレッドの仕組みは次のとおりです。
def generate(self, control_Queue, threadName, runNum):
i = test_imports()
if threadName == 'one':
print ("Starting import_1 number %d") % runNum
p = multiprocessing.Process(target=i.import_1, args=(control_Queue, runNum))
self.children[threadName] = p
p.start()
p = multiprocessing.Process(target=i.import_1, args=(control_Queue, runNum))
大量のif/elif/elseステートメントの必要性を取り除くために、ターゲットを辞書に置き換えたいと思います。