I have a synkronisation script that I run every 10 minutes via wget from a cron job. Sometimes the script runs longer than 10 minutes. In that case I would like to return a page to wget, but not run the actual script. So in a external method/module I have a function like this: BUSY_STATE = 0 def sync_in_progress(busy=None): global BUSY_STATE if busy is None: return BUSY_STATE else: BUSY_STATE = busy The idea is that BUSY_STATE is a global value shared between all threads, and if the sync_test() function below is called while it is allready running in another thread, it will just return 'Sync allready in progress'. I then wrap the actual sync code like this: def long_test_function(): # just to kill time t = Timer('Loop time') for i in xrange(10**7): d = 7*8 e = 7*8 print t.time() return d def sync_test(self): if not sync_in_progress(): sync_in_progress(1) long_test_function() # placeholder for the real sync code sync_in_progress(0) return 'Sync done' else: return 'Sync allready in progress' But it seems that the new method merely waits until the first one has completed. So it allways returns 'Sync done' and calls long_test_function() What am I misunderstanding here? Isn't it the right way to share global data? Or is there some kind of locking going on under my nose that I am to blind to see. -- hilsen/regards Max M, Denmark http://www.mxm.dk/ IT's Mad Science