Call a function when a thread exits

Giampaolo Rodola' gnewsg at gmail.com
Fri May 8 10:57:07 EDT 2009


On 8 Mag, 03:33, Carl Banks <pavlovevide... at gmail.com> wrote:
> On May 7, 6:12 pm, "Giampaolo Rodola'" <gne... at gmail.com> wrote:
>
>
>
>
>
> > Hi,
> > I'm searching for a smooth way to call a certain function when a
> > thread has finished its job.
> > I guess I can keep calling isAlive() in a loop and call my function
> > when it returns False but it's not very elegant.
> > Actually I'm a bit surprised it doesn't exists an "atexit" function.
> > Something like:
>
> > import threading, time
>
> > def myfun():
> >     time.sleep(1)
> >     print "hello"
>
> > def cleanup():
> >     print "thread finished, starting cleanup operations..."
>
> > t = threading.Thread(target=myfun)
> > t.atexit(target=cleanup)
> > t.start()
>
> > Is there a reason why there's no such thing in the threading module?
>
> You can define your target function to clean up on exit.  Using your
> definitions of myfun and cleanup,
>
> def mycleanfun():
>     try:
>         myfun()
>     finally:
>         cleanup()
>
> t = threading.Thread(target=mycleanfun)
> t.start()
>
> Carl Banks

Yes, I know. I was wondering if it could be a good idea proposing
something like an atexit() function to be included in threading
module.


--- Giampaolo
http://code.google.com/p/pyftpdlib
http://code.google.com/p/psutil



More information about the Python-list mailing list