# Very rudimentary test of thread module # Create a bunch of threads, let each do some work, wait until all are done import whrandom import thread import time mutex = thread.allocate_lock() running = 0 done = thread.allocate_lock() done.acquire() def task(ident): global running delay = whrandom.random() * 10 print 'task', ident, 'will run for', delay, 'sec' time.sleep(delay) print 'task', ident, 'done' mutex.acquire() running = running - 1 if running == 0: done.release() mutex.release() next_ident = 0 def newtask(): global next_ident, running mutex.acquire() next_ident = next_ident + 1 print 'creating task', next_ident thread.start_new_thread(task, (next_ident,)) running = running + 1 mutex.release() for i in range(10): newtask() print 'waiting for all tasks to complete' done.acquire() print 'all tasks done'