Gigs_ wrote: > can someone explain me this code
did you write that yourself, or did you find it in some book or article? > ---------------------------------- > import thread the thread module should not be used directly by application programs; use the "threading" module instead. > stdoutmutex = thread.allocate_lock() > exitmutexes = [0] * 10 > > def counter(myId, count): > for i in range(count): > stdoutmutex.acquire() > print '[%s] => %s' % (myId, i) > stdoutmutex.release() > exitmutexes[myId] = 1 # signal main thread > > for i in range(10): > thread.start_new(counter, (i, 100)) > > while 0 in exitmutexes: > pass that's a "busy loop"; the CPU will spend all the cycles it can get checking for the condition. that's not a good way to wait for things. use the "threading" module instead; by default, it waits for all threads to finish without requiring flag lists and excessive CPU use. > print 'Main thread exiting.' > ----------------------------------- > > thread.start_new(counter, (i, 100)) is running counter function. it starts a new instance of counter, in a separate thread. > Is counter function and while statement executed in same time (other > things i understand, but can't get into this)? yes, the while loop will run in the "main" thread, in parallel with the other threads. however, Python uses a global lock to synchronize access to Python variables: http://effbot.org/pyfaq/what-is-the-global-interpreter-lock.htm so the threads in a simple program like this won't run fully in parallel on a multi-CPU machine. </F> -- http://mail.python.org/mailman/listinfo/python-list