mirror of https://github.com/python/cpython
42 lines
846 B
Python
42 lines
846 B
Python
|
# 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'
|