On Sat, 19 Mar 2005 22:35:39 -0500, Peter Hansen wrote:

> When you say "only one thread running", did you mean only
> one monitor thread in addition to the main thread, or did
> you really mean only the main thread was active at this time?

I meant there was the main app and one thread. The problem
does not occur when there are no threads running and the app
has to exit.

> Also, are you doing something odd to terminate threads
> here, and could you have screwed things up yourself?
Very likely - it has happened before :-)

> The code in question is at the end of the MainThread's
> __exitfunc() method, and normally this would be executing
> only after all other threads had terminated, and should
> be safe.  It appears as though the _active dictionary that
> tracks threads has been modified by someone else.

That is what it looks like to me. It seems that the interpreter
is trying to delete a non-existant thread

> Can you post a small self-contained example that
> reproduces the problem?
This will be difficult to do...but perhaps if I give a summary:

def main():
        ...initialize/configure
        ...wait for certain events
        ...based on events launch appropriate thread as follows:

        thread.start_new_thread(event_module.run, (StateValues, (job_parms)))
        ...

def event_module.run(StateValues, (job_parms)):
        ...initialize/configure
        while (1):
                Return = os.system(RunString)

                if Shutdown flag exists:        #thread detects here if needs 
to exit
                        save_job(parms)
                        cleanup_exit(message, exit_code)
                if Return == 0:                 # SUCCESS
                        break
                elif Return == 1:               # ERROR
                        ...             
                elif Return == 7:               # ERROR
                        ...
                        
def cleanup_exit(message, exit_code):
        remove temp files
        log message, etc
        return
        
So at shutdown, any threads running save their state to a job file
then simply do a return.

Hope this helps...also I use command line apps to program like Nedit.

Know of any visual python debuggers? I know there is "idle"...
any others, better ones? 
Have you heard of "eric" python ide. Is it good? - it would have debug
capabilities but is dependent on many libraries I think.

thanks a lot.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to