I am new to python and am creating a script that allows you to transfer cloud cloud data from other programs to Autodesk Maya. I have a script function, but I'm trying to do it faster. I have a for loop that iterates through a list of numbered files. That is, datafile001.txt, datafile002.txt and so on. I am wondering if there is a way to get it to do more than one at a time, perhaps using threads or a queue? Below I have the code I was working on:
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()
This obviously does not work for a number of reasons, at first it will create only 4 threads, I would like you to have an option for more or less. Secondly, are these errors because it is trying to reuse the stream? As I said, I'm pretty new to python and a little in front of me, I read a few posts here, but can't get them to work correctly. I think that the queue may be something that I need, but I could not understand it, I experimented with the condition expression and the join operation, but again I could not get what I want.
I assume that more specifically what I want to achieve is that the function reads a text file, retrieves the coordinates, and then exports them as a binary for reading Maya. Usually, one of these text files requires 5-10 million x, y, z coordinates, which take quite a lot of time. The task manager takes about 30 minutes - 1 hour to make 1 file on a rather creepy computer, the task manager says that python uses only 12% of the processor and about 1% of the bar, so if I could do several of them at once, it did the execution of these 100 or more files is much faster. I would not have thought it would be difficult for multithreading / queuing in a for loop, but I got lost and tried fail-safe solutions for a week.
Thanks to everyone for any help, I really appreciate this and I think this site is awesome. This is my first post, but I feel like I learned python completely by simply reading it here.