Python multiprocessing> = 125 lista nigdy nie kończy się

Próbuję zaimplementować to przetwarzanie wieloprocesoroweseminarium dla własnych celów. Na początku myślałem, że nie skaluje się dobrze, ale kiedy stworzyłem powtarzalny przykład, odkryłem, że jeśli lista elementów przekracza 124, wydaje się, że nigdy nie zwraca odpowiedzi. Wx = 124 działa w ciągu 0,4 sekundy, ale kiedy go ustawięx = 125 nigdy się nie kończy. Używam Pythona 2.7 w systemie Windows 7.

from multiprocessing import Lock, Process, Queue, current_process
import time

class Testclass(object):
    def __init__(self, x):
        self.x = x

def toyfunction(testclass):
    testclass.product = testclass.x * testclass.x
    return testclass


def worker(work_queue, done_queue):
    try:
        for testclass in iter(work_queue.get, 'STOP'):
            print(testclass.counter)
            newtestclass = toyfunction(testclass)
            done_queue.put(newtestclass)

    except:
        print('error')

    return True

def main(x):

    counter = 1

    database = []
    while counter <= x:
        database.append(Testclass(10))
        counter += 1
        print(counter)



    workers = 8
    work_queue = Queue()
    done_queue = Queue()
    processes = []

    start = time.clock()
    counter = 1

    for testclass in database:
        testclass.counter = counter
        work_queue.put(testclass)
        counter += 1
        print(counter)


    print('items loaded')
    for w in range(workers):
        p = Process(target=worker, args=(work_queue, done_queue))
        p.start()
        processes.append(p)
        work_queue.put('STOP')

    for p in processes:
        p.join()

    done_queue.put('STOP')

    newdatabase = []
    for testclass in iter(done_queue.get, 'STOP'):
        newdatabase.append(testclass)

    print(time.clock()-start)
    print("Done")
    return(newdatabase)

if __name__ == '__main__':
    database = main(124)
    database2 = main(125)

questionAnswers(1)

yourAnswerToTheQuestion