77 initialTasks = 2 * NumberOfProcesses |
77 initialTasks = 2 * NumberOfProcesses |
78 for task in argumentsList[:initialTasks]: |
78 for task in argumentsList[:initialTasks]: |
79 taskQueue.put(task) |
79 taskQueue.put(task) |
80 |
80 |
81 # Start worker processes |
81 # Start worker processes |
82 for _ in range(NumberOfProcesses): |
82 workers = [ |
83 multiprocessing.Process( |
83 multiprocessing.Process( |
84 target=worker, args=(taskQueue, doneQueue)).start() |
84 target=workerTask, args=(taskQueue, doneQueue) |
|
85 ) for _ in range(NumberOfProcesses) |
|
86 ] |
|
87 for worker in workers: |
|
88 worker.start() |
85 |
89 |
86 # Get and send results |
90 # Get and send results |
87 endIndex = len(argumentsList) - initialTasks |
91 endIndex = len(argumentsList) - initialTasks |
88 for i in range(len(argumentsList)): |
92 for i in range(len(argumentsList)): |
89 resultSent = False |
93 resultSent = False |
109 taskQueue.put(argumentsList[i + initialTasks]) |
113 taskQueue.put(argumentsList[i + initialTasks]) |
110 |
114 |
111 # Tell child processes to stop |
115 # Tell child processes to stop |
112 for _ in range(NumberOfProcesses): |
116 for _ in range(NumberOfProcesses): |
113 taskQueue.put('STOP') |
117 taskQueue.put('STOP') |
|
118 |
|
119 for worker in workers: |
|
120 worker.join() |
|
121 worker.close() |
114 |
122 |
115 |
123 |
116 def worker(inputQueue, outputQueue): |
124 def workerTask(inputQueue, outputQueue): |
117 """ |
125 """ |
118 Module function acting as the parallel worker for the raw code metrics |
126 Module function acting as the parallel worker for the raw code metrics |
119 calculation. |
127 calculation. |
120 |
128 |
121 @param inputQueue input queue |
129 @param inputQueue input queue |