私はPythonを初めて使用し、点群データを他のプログラムからAutodesk Mayaに持ち込むことができるスクリプトを作成しています。スクリプトは正常に機能していますが、私がやろうとしているのはスクリプトを高速化することです。番号付きファイルのリストを反復処理する for ループがあります。つまり、datafile001.txt、datafile002.txt などです。おそらくスレッドまたはキューを使用して、一度に複数のことを行う方法があるかどうか疑問に思っているのですか? 以下に、私が取り組んでいるコードを示します。
def threadedFuntion(args):
if len(sourceFiles) > 3:
for count, item in enumerate(sourceFiles):
t1=Thread(target=convertPcToPdc,args=(sourceFiles[filenumber1], particlesName, startframe, endframe, pdcIncrements, outputDirectory, variableFolder, acceptableArrayforms, dataType))
t1.start()
t2=Thread(target=convertPcToPdc,args=(sourceFiles[filenumber2], particlesName, startframe, endframe, pdcIncrements, outputDirectory, variableFolder, acceptableArrayforms, dataType))
t2.start()
t3=Thread(target=convertPcToPdc,args=(sourceFiles[filenumber3], particlesName, startframe, endframe, pdcIncrements, outputDirectory, variableFolder, acceptableArrayforms, dataType))
t3.start()
t4=Thread(target=convertPcToPdc,args=(sourceFiles[filenumber4], particlesName, startframe, endframe, pdcIncrements, outputDirectory, variableFolder, acceptableArrayforms, dataType))
t4.start()
これは明らかにいくつかの理由で機能しません。まず、4 つのスレッドしか作成されません。多かれ少なかれオプションを提供できるようにしたいと考えています。次に、スレッドを再利用しようとしているためにエラーが発生しますか? 私が言ったように、私はPythonにまったく慣れておらず、頭を少し超えています。ここでいくつかの投稿を読んでいますが、1つを完全に機能させることはできません。キューは必要なものかもしれないと思いますが、よくわかりませんでした.条件ステートメントと結合ステートメントを試しましたが、もう一度欲しいものを得ることができませんでした.
私が達成したいことは、関数がテキストファイルを読み込んで座標を取得し、それらをバイナリファイルとしてエクスポートしてMayaが読み取ることができるようにすることです。これらのテキスト ファイルの 1 つに 500 万から 1000 万の x、y、z 座標が含まれていることはよくあることで、これにはかなりの時間がかかります。かなりひどいコンピューターで 1 つのファイルを処理するのに約 30 分~1 時間かかります。タスク マネージャーによると、Python は 12% のプロセッサと約 1% の RAM しか使用していません。より多くのファイルがより速く処理されます。forループをマルチスレッド/キューに入れるのは難しいとは思いませんが、約1週間、道に迷って失敗した解決策を試していました。
本当に感謝しています。このウェブサイトは素晴らしいと思います。初めての投稿ですが、ここまで読んだだけで完全に Python を学習した気分です。