def additional_work(processor): sleep(0.001) if not processor.task: return processor.remaining_work -= processor.performance if processor.remaining_work < 0: processor.processed_tasks_number += 1 processor.performed_operations += processor.task.complexity processor.task = None for i in xrange(PROCESSORS_NUMBER): _processor = Processor(i, additional_work=additional_work) _processor.performance = randint(MIN_PERFORMANCE, MAX_PERFORMANCE) _processor.start() PROCESSORS.append(_processor) scheduler = FifoTaskScheduler(task_queue, PROCESSORS) thread.start_new_thread(generate_tasks, (0.001, task_queue)) thread.start_new_thread(schedule_tasks, (0.001, scheduler)) sleep(TEST_TIME) FINISH = True print len(task_queue.tasks) processed_tasks_number = 0 performed_operations = 0