I've got a few questions regarding Threading. I've never used threads before and I want to make sure I'm doing it correctly ;-)
I have a GUI app and it processes Tiff files to PDF (or PostScript). The GUI has a ListBox which the user populates with files to convert. You click on a Button and the file conversion starts. When all the files have been converted, the ListBox items (the files) are cleared. Initially, you had no way of knowing what was going on until all the files where cleared from the ListBox. So I thought of creating threads in the 'for loop' and displaying the name of each file in the statusBar of the GUI (as they are being processed). Here's my method which takes the files in the ListBox and sends them off to my Convert() class (self.convert = Convert()). <code> def convertTiff2PDF(self): from time import time #Let's see how long this takes... I saw Kent do this on the #Python Tutor list before :-) start = time() #Grab a tuple which contains width & length sizes = self.getPaperSize() width = sizes[0] length = sizes[1] #Count the number of files in the ListBox fileCount = self.fileListBox.count() for index in range(fileCount): #Get each filename filenames = str(self.fileListBox.text(index)) #Setup the worker thread and send the filenames in worker = WorkerThread(self, filenames) #Start threading worker.start() #Send each file to be converted self.convert.tiff2pdf(width, length, filenames) #We're done, so clear the ListBox self.fileListBox.clear() #Check the time again end = time() msg = '%s Files Processed in %0.3f Seconds.' % (fileCount, (end-start)) #Grab the statusBar and insert the message statusBar = self.statusBar() statusBar.message(msg, 0) </code> And here's what I'm doing in my Thread class: <code> class WorkerThread(Thread): """Thread class.""" def __init__(self, parent, files): Thread.__init__(self) self.parent = parent self.files = files def run(self): statusBar = self.parent.statusBar() msg = 'Processing: %s, please wait.' % (self.files) statusBar.message(msg, 100) time.sleep(1) </code> Am I doing this threading properly? Is it 'OK' to start multiple threads like this (in the for loop)? It's possible that a user could put 'many' files into the ListBox, by 'many' I mean 100-200 files. Thanks for your help. Bill _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor