Another solution to How do I know when a thread quits?
Giovanni Tumiati
consul at legio.X.com
Wed Jun 8 13:05:29 EDT 2005
On Tue, 07 Jun 2005 09:41:16 -0400, Peter Hansen wrote:
On Tue, 07 Jun 2005 06:28:33 -0700, Prashanth Ellina wrote:
> Hi,
>
> I have used the low-level thread module to write a multi-threaded app.
>
> tid = thread.start_new_thread(process, ())
> tid is an integer thread ident.
>
> the thread takes around 10 seconds to finish processing. Meanwhile the
> main thread finished execution and exits. This causes an error because
> the child thread tries to access something in the sys module which has
> already been GC'ed. I want a reliable way of knowing when the child
> thread finished execution so that I can make the main thread wait till
> then.
>
Prashanth,
By reading the Python documentation I figured out to do the following:
import threading
# create an event flag to signal the completion of the thread
task_event=threading.Event()
# create thread
task_thread = threading.Thread\
(None, name_of_thread_function, None, (thread_args...))
# clear the wait for event flag
task_event.clear()
while ...:
# run thread
try:
task_thread.start()
except:
task_event.set()
error_handler()
if main thread has nothing to do:
# wait for thread to complete (wait on event flag)
task_event.wait()
else:
if task_event.isSet():
# thread has completed
else:
# thread is still active
# so main thread can continue with more tasks
##end while...
Remember to have the "task_thread" set the "task_event" flag prior to
completing.
Hope this helps.
More information about the Python-list
mailing list