mirror of https://github.com/python/cpython.git
Module to test threads
This commit is contained in:
parent
a873fcecdf
commit
cc54417d1a
|
@ -0,0 +1,41 @@
|
|||
# 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'
|
Loading…
Reference in New Issue