On 8 Mag, 03:33, Carl Banks <pavlovevide...@gmail.com> wrote: > On May 7, 6:12 pm, "Giampaolo Rodola'" <gne...@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 -- http://mail.python.org/mailman/listinfo/python-list