That was a very good answer, and it sure sounds like it would work. However, I failed at implementing it. :( My updated runQueue() function is:
def runQueue(self): self.buildProcess = None count = 1 # current position in the queue while True: if self.buildProcess is None: self.execute(self.cmdQueue[count][2], self.cmdQueue[count][0], self.cmdQueue[count][1]) count = count + 1 else: # I'm not really sure what to put here I pretty sure I did all of that wrong. ;) Also, how exactly would I redirect stderr to another place? On Dec 30, 12:22 am, Tom Plunket <[EMAIL PROTECTED]> wrote: > cypher543 wrote: > > self.buildPID = subprocess.Popen(buildCmd, stdout = subprocess.PIPE, stderr > > = subprocess.STDOUT)Instead of calling it self.buildPID, you might just > > call it > self.buildProcess or something. It's actually a Popen object that gets > returned. > > So yes you can do what you want: > > __init__ self.buildProcess to None. Then, in execute(), if > (self.buildProcess is None) or (self.buildProcess.poll() is not None) > start the next process. > > You've got to wait for one process to end before starting the next one, > it's really that easy. So, don't just go ahead and fire them all > instantly. Possibly what you want to do instead is have runQueue() do > the check somehow that there's no active process running. > > What I would do, have runQueue() check to see if self.buildProcess is > None. If it is None, fire the next process in the queue. If it isn't > None, then check to see if it's ended. If it has ended, then set > self.buildProcess to None. Next UI update the next step in the queue > gets done. Mind that you'll have to modify the queue as you go, e.g. > self.queue = self.queue[1:]. > > Finally, consider piping stderr separately, and direct its output to a > different window in your GUI. You could even make that window pop open > on demand, if errors occur. > > good luck, > -tom! > > -- -- http://mail.python.org/mailman/listinfo/python-list