何千ものバイナリ ファイルにアクセスするために使用している Dotnet で記述された dll がいくつかあります。データはディレクトリごとに区分されているため、パフォーマンスを向上させるために、複数のプロセスまたはスレッドを使用してファイルを処理することを考えました。
現在、メイン クラスの一部である関数があります (引数として self が必要です)。これは、プライベート メソッドに簡単にリファクタリングできます。
私の最初の傾向は Multiprocess モジュールを使用することですが、IronPython では利用できないようです。
私の次の考えは、タスクを使用することでした
def __createThreads(self):
tasks = Array.CreateInstance(Task, 5)
for idx in range(0, 5):
tasks.append(Task.Factory.StartNew(self.__doWork, args=(idx,)))
Task.WaitAll(tasks)
def __doWork(self, idx):
for index in range (0, idx):
print "Thread: %d | Index: %d" % (idx, index)
またはスレッドを使用するには
def __createThreads(self):
threads = list()
for idx in range(0, 5):
t = Thread(ThreadStart(self.__doWork))
t.Start()
threads.append(t)
while len(threads) > 0:
time.sleep(.05)
for t in threads:
if(not t.IsAlive):
threads.remove(t)
私が見つけられないのは、引数を渡す方法の IronPython の例です