Ich bin ziemlich neu in Python und mache ein Skript, mit dem man Punktwolkendaten aus anderen Programmen in Autodesk Maya bringen kann. Ich habe mein Skript funktioniert gut, aber was ich versuche zu tun ist, es schneller zu machen. Ich habe eine for-Schleife, die durch eine Liste von nummerierten Dateien iteriert. D.h. datafile001.txt, datafile002.txt und so weiter. Ich frage mich, ob es eine Möglichkeit gibt, mehr als eine Datei auf einmal zu bearbeiten, möglicherweise mit Threads oder einer Warteschlange? Unten habe ich den Code, an dem ich gearbeitet habe:
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()
Das funktioniert offensichtlich aus mehreren Gründen nicht, erstens werden nur 4 Threads erstellt, ich würde gerne eine Option für mehr oder weniger anbieten können. Zweitens schlägt es fehl, weil es versucht, einen Thread wiederzuverwenden? Wie ich schon sagte, ich bin ziemlich neu in Python und bin ein wenig über meinen Kopf, ich habe mehrere Beiträge hier gelesen, aber kann nicht bekommen, eine ganz richtig zu arbeiten. Ich denke, eine Warteschlange könnte etwas sein, was ich brauche, aber konnte nicht ganz herausfinden, ich experimentierte mit der Bedingung-Anweisung und mit der join-Anweisung, aber wieder einmal nicht bekommen, was ich will.
Ich schätze, um genauer zu sein, was ich erreichen möchte, ist, dass die Funktion durch eine Textdatei liest, die Koordinaten abruft und sie dann als eine Binärdatei für Maya zu lesen exportiert. Es ist üblich, dass eine dieser Textdateien 5-10 Millionen x,y,z-Koordinaten haben, die ziemlich viel Zeit in Anspruch nimmt. Es dauert etwa 30 Minuten bis 1 Stunde, um 1 Datei auf einem ziemlich beastly Computer zu tun, Task-Manager sagt Python ist nur 12% Prozessor und rund 1% ram, so dass, wenn ich mehrere von diesen auf einmal tun könnte, würde es tun diese 100 oder mehr Dateien gehen durch eine Menge schneller. Ich würde nicht denken, es wäre zu schwer zu multithread/queue up eine for-Schleife, aber ich habe verloren und versucht, scheitern Lösungen für etwa eine Woche.
Ich danke Ihnen allen für Ihre Hilfe, ich weiß sie wirklich zu schätzen und finde diese Website großartig. Dies ist mein erster Beitrag, aber ich fühle mich wie ich vollständig Python nur durch das Lesen auf hier gelernt haben.