Mercurial Hosting > traffic-intelligence
comparison python/prediction.py @ 559:806df5f61c03
adapted safety-analysis script to use multi-threading
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 15 Jul 2014 01:25:33 -0400 |
parents | b91f33e098ee |
children | a9c1d61a89b4 |
comparison
equal
deleted
inserted
replaced
558:a80ef6931fd8 | 559:806df5f61c03 |
---|---|
184 commonTimeInterval = timeInterval | 184 commonTimeInterval = timeInterval |
185 else: | 185 else: |
186 commonTimeInterval = obj1.commonTimeInterval(obj2) | 186 commonTimeInterval = obj1.commonTimeInterval(obj2) |
187 if nProcesses == 1: | 187 if nProcesses == 1: |
188 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors | 188 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors |
189 i, collisionPoints[i], crossingZones[i] = computeCrossingsCollisionsAtInstant(predictionParams, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug) | 189 i, cp, cz = computeCrossingsCollisionsAtInstant(predictionParams, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug) |
190 if len(cp) != 0: | |
191 collisionPoints[i] = cp | |
192 if len(cz) != 0: | |
193 crossingZones[i] = cz | |
190 else: | 194 else: |
191 from multiprocessing import Pool | 195 from multiprocessing import Pool |
192 pool = Pool(processes = nProcesses) | 196 pool = Pool(processes = nProcesses) |
193 jobs = [pool.apply_async(computeCrossingsCollisionsAtInstant, args = (predictionParams, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug)) for i in list(commonTimeInterval)[:-1]] | 197 jobs = [pool.apply_async(computeCrossingsCollisionsAtInstant, args = (predictionParams, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug)) for i in list(commonTimeInterval)[:-1]] |
194 #results = [j.get() for j in jobs] | 198 #results = [j.get() for j in jobs] |
195 #results.sort() | 199 #results.sort() |
196 for j in jobs: | 200 for j in jobs: |
197 i, cp, cz = j.get() | 201 i, cp, cz = j.get() |
198 #if len(cp) != 0 or len(cz) != 0: | 202 #if len(cp) != 0 or len(cz) != 0: |
199 collisionPoints[i] = cp | 203 if len(cp) != 0: |
200 crossingZones[i] = cz | 204 collisionPoints[i] = cp |
205 if len(cz) != 0: | |
206 crossingZones[i] = cz | |
201 pool.close() | 207 pool.close() |
202 return collisionPoints, crossingZones | 208 return collisionPoints, crossingZones |
203 | 209 |
204 class PredictionParameters: | 210 class PredictionParameters: |
205 def __init__(self, name, maxSpeed): | 211 def __init__(self, name, maxSpeed): |