import multiprocessing as mp import time def QueueWorker( i, Q, lock ): tmp=lock.acquire() print i,' done' lock.release() Q.put( (float(i),float(i+1),float(i-1),float(i*2)) ) def ArrayWorker( i, c, lock ): tmp=lock.acquire() print i,' done' c.append( (float(i),float(i+1),float(i-1),float(i*2)) ) lock.release() lock= mp.Lock() Q=mp.Queue() A=[] def testQ(): for i in range(10000): mp.Process( None, QueueWorker, None, (i,Q,lock) ).start() while len(mp.active_children())>=mp.cpu_count()+4: time.sleep(0.01) def testA(): for i in range(10000): mp.Process( None, ArrayWorker, None, (i,A,lock) ).start() while len(mp.active_children())>=mp.cpu_count()+4: time.sleep(0.01) print 'with testQ process stuck after 1400 insertions' print 'But its okay with testA'